JHipster单体应用执行mvnw编译出现两个webpack警告如何解决?
警告1:@reduxjs/toolkit 源映射文件解析失败
产生原因
- @reduxjs/toolkit 部分历史版本的打包配置存在问题,官方发布到npm的安装包中没有包含
module.js.map文件,但编译后的js文件头部仍保留了指向该源映射文件的注释,JHipster默认开启的source-map-loader加载时找不到对应文件就触发了警告 - 该警告不影响项目正常运行,只会影响开发环境对redux相关代码的调试定位
修复方法
两种方案二选一即可:
- 升级@reduxjs/toolkit到最新稳定版,该路径配置错误已在后续版本被官方修复
npm install @reduxjs/toolkit@latest # 若使用yarn则执行 yarn add @reduxjs/toolkit@latest
- 不需要升级的场景下,可在webpack配置中忽略对@reduxjs/toolkit的源映射加载,修改项目下
webpack.common.js的module.rules规则,给source-map-loader添加排除规则:
module: { rules: [ { test: /\.js$/, enforce: 'pre', use: ['source-map-loader'], exclude: /node_modules\/@reduxjs\/toolkit/, }, // 其他原有规则保持不变 ] }
警告2:DefinePlugin 检测到process.env.NODE_ENV值冲突
产生原因
- JHipster自动生成的webpack多环境配置中,多处重复定义了
process.env.NODE_ENV变量,且不同配置文件的赋值不一致,webpack编译时检测到冲突就抛出警告 - 也可能是引入的第三方依赖内部也通过DefinePlugin定义了该变量,和项目本身的配置值不匹配
修复方法
- 检查项目下的
webpack.dev.js、webpack.prod.js、webpack.common.js三个配置文件,统一所有地方的process.env.NODE_ENV赋值,开发环境统一为development,生产环境统一为production - 如果是默认生成的配置存在冲突,可以在DefinePlugin配置中显式优先覆盖该值:
new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV === 'production' ? 'production' : 'development'), // 其他原有配置保持不变 })
- 执行mvnw命令时可显式传入环境变量避免默认值冲突:
Windows环境执行:
set NODE_ENV=development && mvnw
Linux/Mac环境执行:
NODE_ENV=development ./mvnw
内容的提问来源于stack exchange,提问作者Bajer Steven
相关产品推荐
相关产品推荐

