首页 > 解决方案 > Heroku 最近开始在 Webpack 构建期间给出部署错误“npm ERR!code ELIFECYCLE”

问题描述

我们的部署代码没有改变,我们的 Webpack 版本(“webpack”:“^4.41.0”)没有改变,并且部署仍然可以成功地用于其他(非 Heroku)服务器。

然而,就在几天前,Heroku deploy 停止处理这个错误:

2878 <s> [webpack.Progress] 70% building 4114/4114 modules 0 active 2879 npm ERR! code ELIFECYCLE 2880 npm ERR! errno 1 2881 npm ERR! client@0.1.0 build-heroku: 'npm run clean && webpack --progress --bail --env dist -p' 2882 npm ERR! Exit status 1 2883 npm ERR! 2884 npm ERR! Failed at the client@0.1.0 build-heroku script.

我们的 /package.json 有:

"heroku-postbuild": "cd frontend && npm install --only=dev && npm install && npm run build"

我们的 /frontend/package.json 有:

“脚本”:{

"clean": "rimraf dist/*",

"build": "npm run clean && webpack --progress --bail --env dist -p && rm -r prod 2>/dev/null || : && mv dist prod"

}

那么为什么现在 Heroku 中的 Webpack 构建只达到 70% 呢?有没有其他人看到这种情况发生?

标签: node.jsreactjsherokuwebpackwebpack-4

解决方案


原来我们没有完整阅读日志。中间有错误,最后没有出现。我们不得不在原始日志文件中搜索“ error ”这个词。

例如:

ModuleNotFoundError: Module not found: Error: Can't resolve 'dns' in '/tmp/build_e65fff75f8ffc7b45670e320e578bd35/frontend/node_modules/mongodb/lib/core'

该解决方案涉及几个步骤:

  1. 安装一些模块(即 npm install x)
  2. 将此块添加到 Webpack 配置中:

    节点:{ fs:'empty',net:'empty',tls:'empty',dns:'empty'}

  3. 在我们的.gitlab-ci.yml文件 中停止使用 ruby​​ 图像:在此处输入图像描述


推荐阅读