解决vue动态加载组件import引入组件找不到组件(Error:Cannotfindmodule)
在Vue中动态加载组件时,import()使用变量路径会因编译期无法静态分析而报错,改用webpack的require.ensure()传递变量参数即可实现按需加载。
使用场景
在项目中封装了大量组件,需要根据接口返回的不同类型值,在页面上动态加载对应的组件——这是很常见的需求,特别是在一些配置化、低代码的场景中。
问题描述
采用动态组件加载的方式,用 import() 引入组件时,如果路径写死为静态字符串,组件可以正常加载;但只要路径里用上了变量,组件就找不到了,控制台直接报错:Error: Cannot find module。

问题原因
import() 是 ES6 引入的动态加载模块语法,运行时能返回 Promise,因此它可以用来按需加载不同的模块。但关键在于:import() 在编译阶段就已经确定了模块的依赖关系,路径需要是一个明确的字符串,不能是变量——因为变量的值是在运行时才确定的,编译时无法静态分析。
解决方案
既然 import() 这条路走不通,可以用 webpack 提供的 require.ensure() 方法。它接受变量作为参数,同样返回 Promise,能实现动态加载的效果。具体写法如下:
return () => require.ensure([], (require) => require(`./components/${type}.vue`))
总结
动态组件加载是 Vue 开发中的常用技巧,遇到 import() 不能使用变量的问题时,切换到 require.ensure() 就能轻松解决。把这个方法记下来,下次再碰到相同报错就能快速定位了。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















