关于使用ruoyi-admin前端工程碰到的诡异问题 Error: Cannot find module 若依前端

792 阅读2分钟

问题起因:在部署测试环境时 因为考虑到要区分后续生产环境的部署工作 代码中有很多变量(例如iframe的src)依赖于.env文件去做的区分 所以要区分 开发 测试 生产的env文件

image.png

以下是.env.test的文件

b6253b34-fbf6-4759-b72f-166b8d170e04.png

但是当我 npm run build:test 把dist部署到服务器之后 点击菜单以后动态路由的加载报错了

image.png

image.png

附上动态路由载入代码

image.png

当然 很多使用ruoyi进行二开的同学都会遇到这个问题 网上查了很多资料 可以放弃import路由懒加载策略 使用require 不过这种方式会在首包注册路由的时候注入全量的vue组件chunkjs 是一种十分耗费性能的方式这里一个很大的误区就是 webpack4是可以支持import语法的! 只需要配置bable就好

借鉴某篇错误的文章 image.png

根据vue-cli对webpack的预设配置 我npm run build:test也是走入production生产打包预设 按道理来说 应该不存在import导入模块失败的问题(已经配置别名路径)

image.png

打包虽然配置了chunk切片 但是test环境(类生产环境打包预设配置)下的应该也会走入该逻辑

image.png

在后续的调试中 我尝试把npm run build:test 改为 npm run build:prod

import的模块导入又可以正常使用

以这个思路为起点 怀疑是否是.env.test配置文件未明确指定环境变量导致 在配置文件中 明确指定了 NODE_ENV = 'test'

再通过npm run build:test打包以后 解决了Error: Cannot find module '@/views/system/user' at webpackEmptyContext的问题

总结原因:应该是npm run build:test时 未明确设置webpack配置文件的NODE_ENV环境变量 导致vue-cli配置的webpack预设出现的打包配置问题。(希望大佬解惑)