引入bootstrap后frontend-maven-plugin构建失败报Exit value:1
问题排查&解决步骤
你看到的Process exited with an error: 1是frontend-maven-plugin抛出的通用封装错误,只代表yarn run build执行失败,真实的错误原因在这行报错之前的webpack/yarn输出日志里,按以下步骤排查:
- 第一步:拿到真实报错信息
- 优先本地复现:进入项目中pom配置的
src工作目录,使用maven插件安装的node/yarn执行构建命令(和Jenkins执行逻辑完全一致):
本地执行后会直接打印webpack的具体错误,不用在Jenkins上反复触发构建排查。# 先执行依赖安装,和插件逻辑一致 ../target/node/yarn install --frozen-lockfile # 执行构建 ../target/node/yarn run build - 如果本地构建正常,直接翻Jenkins构建日志,找到Maven ERROR行之前的yarn/webpack输出段,就能看到具体错误(比如模块找不到、loader缺失、语法错误等),Maven的报错是最后兜底抛出的,真实问题日志在前面。
- 优先本地复现:进入项目中pom配置的
- 第二步:针对引入bootstrap.css后最常见的错误场景逐一修复
- 缺少css/静态资源loader,webpack无法解析css文件
webpack默认只识别js模块,直接引入css文件会直接构建失败,这是引入css类依赖最高发的问题:- 先安装必要依赖:
yarn add css-loader style-loader mini-css-extract-plugin -D # bootstrap5如果用到js组件还需要装@popperjs/core依赖,仅引css可以不装 # yarn add bootstrap @popperjs/core - 在webpack配置的
module.rules中添加css解析规则,同时补充bootstrap引用的字体文件解析规则(webpack5版本可直接用内置资源模块,不需要额外装file-loader):const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { // 其他原有配置... module: { rules: [ // 其他原有规则... { test: /\.css$/, use: [ process.env.NODE_ENV === 'production' ? MiniCssExtractPlugin.loader : 'style-loader', 'css-loader' ] }, // 处理bootstrap引用的字体文件 { test: /\.(woff|woff2|eot|ttf|otf)$/, type: 'asset/resource' } ] }, plugins: [ // 其他原有插件... new MiniCssExtractPlugin() ] }
- 先安装必要依赖:
- yarn.lock未更新导致依赖安装失败
你配置的yarn install参数带了--frozen-lockfile,如果本地新增bootstrap依赖后,只提交了package.json,没有把更新后的yarn.lock提交到代码库,Jenkins构建时会因为lockfile和package.json不匹配终止依赖安装,或者根本没装上bootstrap包,导致找不到引入的css文件。
解决:本地删除node_modules和旧的yarn.lock,重新执行yarn install生成新的lockfile,将package.json、yarn.lock一并提交后重新构建。 - 缓存导致的依赖异常
如果前面的配置都确认没问题,清理Jenkins工作目录下的target文件夹、src/node_modules文件夹,重跑构建即可,避免旧缓存的node/yarn依赖导致构建异常。
- 缺少css/静态资源loader,webpack无法解析css文件
内容的提问来源于stack exchange,提问作者user10971932
相关产品推荐
相关产品推荐

