执行git push heroku master遇npm ENOENT错误,构建失败求助
你在执行git push heroku master时碰到了这个头疼的npm错误:
remote: 正在安装新模块(package.json)remote: npm ERR! path /tmp/build_946cfa00bc649e92ea9db4ad388e3eab/node_modules/npm/node_modules/dezalgo remote: npm ERR! code ENOENT . remote: npm ERR! errno -2 . remote: npm ERR! syscall rename . remote: npm ERR! enoent ENOENT: 没有该文件或目录,重命名 '/tmp/build_946cfa00bc649e92ea9db4ad388e3eab/node_modules/npm/node_modules/dezalgo' -> '/tmp/build_946cfa00bc649e92ea9db4ad388e3eab/node_modules/npm/node_modules/.dezalgo.DELETE' . remote: npm ERR! enoent 此问题与npm无法找到文件相关。remote: npm ERR! enoent . remote: remote: npm ERR! 本次运行的完整日志可查看:remote: npm ERR! /app/.npm/_logs/2018-01-20T11_17_57_014Z-debug.log remote: remote: -----> 构建失败
这大概率是npm缓存损坏、本地依赖文件有问题,或者Heroku安装依赖时的临时文件异常导致的,试试下面这几步:
- 先清理本地npm缓存:在终端里跑
npm cache clean --force,强制把缓存里可能损坏的文件清掉。 - 删掉本地的依赖文件夹和锁文件:
- 执行
rm -rf node_modules(Mac/Linux)或者rmdir /s node_modules(Windows),把本地的依赖包全删了重来 - 再执行
rm package-lock.json(Mac/Linux)或者del package-lock.json(Windows),删除版本锁文件
- 执行
- 重新安装本地依赖:运行
npm install,让npm重新拉取并安装所有依赖,确保本地的依赖是完整的 - 再次推送代码到Heroku:重新执行
git push heroku master,这次Heroku会基于干净的依赖进行构建
如果上面的方法还不行,可以试试指定npm版本:在你的package.json里添加一段配置,比如:
"engines": { "npm": "6.x" }
这里的6.x换成你本地能正常运行的npm版本,避免Heroku用的npm版本和本地不一致引发兼容问题。
内容的提问来源于stack exchange,提问作者Operationbackfire

