You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3从Vue CLI迁移至Vite时报default属性解构错误如何解决

报错原因

Uncaught (in promise) TypeError: Cannot destructure property 'default' of 'undefined' as it is undefined.

该报错本质是导入的模块返回值为undefined,Vue内部读取模块默认导出的default属性时解构失败,通常由Vue CLI迁移到Vite后的2个配置差异导致:

  • 导入Vue单文件组件未显式加.vue后缀:Vue CLI基于Webpack构建,默认配置了扩展名自动补全规则,允许省略.vue后缀导入SFC;但Vite默认不会自动补全.vue后缀,你代码中的import ProjectList from '@/components/ProjectList';没有加后缀,导致Vite无法匹配到对应的文件,导入结果为空。
  • @路径别名未在Vite中配置:Vue CLI默认内置了@指向项目src目录的别名配置,而Vite需要手动配置别名才能识别@开头的导入路径,别名缺失会导致路径解析失败,模块导入结果为undefined。
修复步骤
  1. 优先修改导入语句,补全.vue后缀即可快速解决绝大多数同类问题:
// 修改前
import ProjectList from '@/components/ProjectList';
// 修改后
import ProjectList from '@/components/ProjectList.vue';
  1. 如果补全后缀后仍报错,检查vite.config.js文件,确保已经配置了@别名:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'node:path'

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src')
    }
  }
})
  1. 如果你希望保留之前省略.vue后缀的开发习惯,可以在vite.config.js的resolve.extensions配置中添加.vue(不推荐,会降低IDE类型提示精度和Vite的构建扫描效率):
export default defineConfig({
  // 其他配置保持不变
  resolve: {
    extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
  }
})

内容的提问来源于stack exchange,提问作者Phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:57:02