Heroku:在部署期间解决npm错误 – 读取/ tmp文件
一些新的依赖或其他一些该死的事情导致npm在get push heroku master
部署过程中的错误:
-----> Node.js app detected -----> Resolving engine versions Using Node.js version: 0.10.1 Using npm version: 1.2.15 -----> Fetching Node.js binaries -----> Vendoring node into slug -----> Installing dependencies with npm .... npm ERR! Additional logging details can be found in: npm ERR! /tmp/build_24pmtv04ok0ss/npm-debug.log npm ERR! not ok code 0
确实not ok
。 没有其他有用的信息打印到控制台,所以当然我想看看那个日志文件里有什么。
所以我尝试一下这个:
$ heroku run cat /tmp/build_24pmtv04ok0ss/npm-debug.log
但是,不存在这样的文件:
Running `cat /tmp/build_24pmtv04ok0ss/npm-debug.log` attached to terminal... up, run.3166 cat: /tmp/build_24pmtv04ok0ss/npm-debug.log: No such file or directory
我的问题是这样的:
- 日志文件在哪里? 为什么我不能读它?
- 有没有其他的方式Heroku / NPM给我一个详细的错误打印到控制台?
- 为什么完全相同的节点环境在本地工作正常,但在Heroku上失败?
当你将代码推送到Heroku时,你的构build是在一个临时构build的dyno上运行的,所以一旦构build完成,所有的文件都没有了,因为dynos有一个短暂的文件系统 。 heroku run cat /tmp/build_24pmtv04ok0ss/npm-debug.log
没有帮助的原因是,您使用现有应用程序的新文件系统(完全独立于构builddyno)附加到一次性testing仪 。
所有的希望都不会丢失。 你应该能够看到发生了什么事情,通过调整buildpack来退出npm-debug.log
,如下所示:
function cat_npm_debug_log() { if [ -f $BUILD_DIR/npm-debug.log ]; then cat $BUILD_DIR/npm-debug.log fi } trap cat_npm_debug_log EXIT
我还没有彻底testing过,但是我做了一个默认的Node buildpack的快速分支来完成我刚刚展示的内容 。 随意尝试将其设置为一个自定义的buildpack :
heroku config:add BUILDPACK_URL="https://github.com/ryanbrainard/heroku-buildpack-nodejs.git"
在使用自定义构build包的所有麻烦之前,请尝试在heroku上启用更详细的日志logging输出:
heroku config:set NPM_CONFIG_LOGLEVEL=verbose
有关更多信息,请参阅https://devcenter.heroku.com/articles/troubleshooting-node-deploys 。