Metronic v8.0.24用Laravel Mix编译提示找不到./locale模块如何解决?
问题排查处理方案
报错信息:WARNING in ./public/theme/assets/plugins/global/plugins.bundle.js 22:200849-200871 Module not found: Error: Can't resolve './locale' in 'C:\xampp1\htdocs\aseman\public\theme\assets\plugins\global'
这个警告由Metronic v8.0.24内置的plugins.bundle.js依赖的moment.js路径引用不匹配导致,按以下步骤处理:
- 校验moment.js版本
执行npm list moment查看项目当前安装的moment版本,Metronic v8.0.24默认适配的是moment 2.29.1版本,高于此版本的moment调整了locale目录的相对路径规则,会触发该报错。如果版本不匹配,执行npm install moment@2.29.1 --save固定版本后重新编译测试。 - 配置webpack别名修正路径
若版本固定后警告仍存在,在webpack.mix.js文件顶部先引入path模块:const path = require('path'),再添加webpack别名配置:mix.webpackConfig({ resolve: { alias: { './locale': path.resolve(__dirname, 'node_modules/moment/locale/') } } }) - 禁用无用locale引入(可选)
若项目不需要使用moment的多语言能力,可直接在webpack配置中忽略所有locale包,彻底消除警告:const webpack = require('webpack') mix.webpackConfig({ plugins: [ new webpack.IgnorePlugin({ resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ }) ] })
所有配置修改完成后执行npm run dev重新编译即可。
内容的提问来源于stack exchange,提问作者xformer
相关产品推荐
相关产品推荐

