我试图使用迁移构建和vite (https://v3-migration.vuejs.org/breaking-changes/migration-build.html#overview)将Vue 2项目升级到Vue 3
我已经完成了步骤1-4 (虽然跳过了4,因为没有使用类型记录)。此时,我得到以下错误:
src/main.js:3:16: error: No loader is configured for ".vue" files: src/App.vue
尽管有这条消息,但问题似乎与@别名有关,因为如果我将import App from '@/App.vue';
更改为import App from './App.vue';
in main.js
,它就能正常工作。有什么想法吗?我也尝试过将别名更改为/src/
。
一方面,这似乎是一个简单的解决办法,但另一方面,在整个项目中还有许多其他的导入需要重写。
main.js:
import Vue from 'vue';
import App from '@/App.vue';
Vue.config.productionTip = false;
let app = new Vue({
render: h => h(App)
}).$mount('#app');
vite.config.js
import { defineConfig } from 'vite';
import createVuePlugin from '@vitejs/plugin-vue';
import path from 'path';
export default defineConfig({
plugins: [
createVuePlugin({
template: {
compilerOptions: {
compatConfig: {
MODE: 2
}
}
}
}),
],
resolve: {
alias: {
'@/': path.resolve(__dirname, './src/'),
'vue': '@vue/compat',
},
},
});
package.json
{
"name": "xxx",
"version": "0.1.0",
"dependencies": {
"@vue/compat": "^3.1.0",
"vue": "^3.1.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^1.2.2",
"@vue/compiler-sfc": "^3.1.0",
"vite": "^2.4.1"
}
}
我无法在codesandbox中运行再现(它似乎根本不喜欢vite.config.js
中的别名语句)。但是这个回购显示了行为:https://github.com/dovrosenberg/vite-vue-alias-issue
当使用此回购到:Internal server error: Failed to resolve import "@/App.vue" from "src/main.js". Does the file exist?'
时,错误有时会发生变化(我不知道为什么)。
发布于 2022-02-06 02:02:13
resolve.alias
键@
不能包含斜杠:
import { defineConfig } from 'vite';
import path from 'path';
export default defineConfig({
⋮
resolve: {
alias: {
// '@/': path.resolve(__dirname, './src/'), ❌
'@': path.resolve(__dirname, './src/'), ✅
⋮
},
},
});
https://stackoverflow.com/questions/70998491
复制相似问题