typescript - vue-cli-service kan inte lösa import med anpassad alias i *.vue
Först och främst vet jag att det finns många liknande frågor som denna, men alla de jag kollade på är antingen inte mitt exakta problem eller föråldrade (t.ex. folk som frågar hur man lägger till @/ som nu finns där som standard).
Vad är mitt mål/problem?
Jag har några *.ts-filer som genereras till target/generated-typescript istället för src/ där min "handgjorda" kod är placerad.
I min tsconfig.json lade jag till "$/*": [ "target/generated-typescript/*" ] analogt med konfigurationen för @/* vägaliaset. I vanliga *.ts-filer kan jag använda $/my_ts_file för imports. Nu ville jag använda en sådan fil för att importera saker till en *.vue-fil.
I IntelliJ är allt OK eftersom det inte finns något fel markerat vid importen. men när jag startar vue-cli-service serve (eller build) får jag följande fel i körningskonsolen:
This dependency was not found:
* $/my_ts_file in ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-2!./node_modules/cache-loader/dist/cjs.js??ref--0
-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/MyvueComponent.vue?vue&type=script&lang=ts&
och en liknande i webbläsaren:
Failed to compile.
./src/views/MyvueComponent.vue?vue&type=script&lang=ts& (./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/MyvueComponent.vue?vue&type=script&lang=ts&)
Module not found: Error: Can't resolve '$/my_ts_file' in 'C:\path\to\my\proj\src\views'
Mitt försök att åtgärda problemet
Jag lade till följande block i min vue.config.js som föreslagits av liknande frågor som efterfrågar att @/-importeringar ska fungera.
chainWebpack: config => {
config.resolve
.alias
.set('$', config.store.get('context') + '\\target\\generated-typescript')
},
detta lägger till aliaset korrekt som utmatningen av console.log(config.resolve.alias.store) visar. raderna med '@' och '$' är identiska förutom src mot min målmappar. jag försökte också använda configureWebpack istället för chainWebpack men båda fungerar inte.
Miljö
Windows Server 2012 Standard
Node 12.6.0
NPM 6.9.0
vue-cli 3.10.0 vue 2.6.10