CircleCI使用cypress/base镜像执行yarn build提示webpack未找到怎么解决?
问题根因
报错webpack: not found是CI环境缺少webpack可执行文件导致的,核心原因分为两类:
- 你本地安装了devDependencies不代表CI环境也安装了对应依赖,Cypress官方base镜像仅预装了Node.js、yarn和Cypress运行所需的系统依赖,不会自带项目的业务开发依赖
- 若CI流程已经执行了依赖安装,大概率是安装时加了
--production参数,该参数会跳过devDependencies的安装,而webpack存放在devDependencies分类下,自然无法被识别
修复方案
按优先级依次调整即可:
- 优先检查CircleCI的config.yml配置,确保
yarn build执行前已经完成依赖安装,正确的步骤顺序参考:
version: 2.1 jobs: test-and-build: docker: - image: cypress/base:12 steps: - checkout # 必须先执行全量依赖安装 - run: yarn install # 再依次执行测试、构建命令 - run: yarn cypress run - run: yarn build
- 若已有
yarn install步骤,检查是否附带--production、--prod类参数,删除该参数即可安装所有依赖(包括devDependencies) - 如果你确实需要开启生产模式安装依赖,可选择两种方案二选一:
- 将webpack、webpack-cli等构建必需的包从devDependencies移动到dependencies中
- 修改package.json里的build命令,显式调用node_modules下的webpack可执行文件:
NODE_ENV=production ./node_modules/.bin/webpack
内容的提问来源于stack exchange,提问作者Fadi
相关产品推荐
相关产品推荐

