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