Vue2升级Vue3时Vite报dep-scan插件读取length属性错误
问题根因
报错和/src/main.js文件本身无关,属于vite.config.js配置格式错误导致的初始化阶段异常:
- Vite的
resolve.alias数组要求每一项别名配置必须包含find(匹配规则)、replacement(替换目标)两个必填字段 - 你当前配置中
vue指向@vue/compat的别名项没有遵循该格式,直接写为{ vue: '@vue/compat' },导致Vite做依赖预构建扫描时,读取到的匹配规则为undefined,执行pattern.length逻辑时直接抛出类型错误 - 错误发生在路径规则匹配阶段,还未进入实际文件查找流程,因此即使重命名、删除
/src/main.js,报错也不会发生变化,和你之前推测的“模块无法定位main.js”无关。
修复方案
修改vite.config.js中的别名配置,将vue的别名项补全为标准的find/replacement结构即可,修正后的完整配置如下:
import { defineConfig } from 'vite'; import path from 'path'; import createVuePlugin from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [ createVuePlugin({ template: { compilerOptions: { compatConfig: { MODE: 2, }, }, }, }), ], server: { port: 8080, }, resolve: { alias: [ // 补全vue别名的标准字段 { find: 'vue', replacement: '@vue/compat', }, { find: '@', replacement: path.resolve(__dirname, 'src'), }, ], }, });
后续操作
配置修改完成后,重启Vite开发服务或重新执行构建命令,原dep-scan相关报错会直接消除,无需调整业务代码或入口文件。
内容的提问来源于stack exchange,提问作者Frido Emans
相关产品推荐
相关产品推荐

