首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在使用Vue 3迁移构建时,Vite没有找到“.vue”加载程序?

为什么在使用Vue 3迁移构建时,Vite没有找到“.vue”加载程序?
EN

Stack Overflow用户
提问于 2022-02-05 13:30:39
回答 1查看 2.2K关注 0票数 2

我试图使用迁移构建和vite (https://v3-migration.vuejs.org/breaking-changes/migration-build.html#overview)将Vue 2项目升级到Vue 3

我已经完成了步骤1-4 (虽然跳过了4,因为没有使用类型记录)。此时,我得到以下错误:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
{
  "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?'时,错误有时会发生变化(我不知道为什么)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-06 02:02:13

resolve.alias@不能包含斜杠:

代码语言:javascript
运行
复制
import { defineConfig } from 'vite';
import path from 'path';

export default defineConfig({
  ⋮
  resolve: {
    alias: {
      // '@/': path.resolve(__dirname, './src/'), ❌
      '@': path.resolve(__dirname, './src/'), ✅
      ⋮
    },
  },
});

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70998491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档