Heroku:在部署期间排除npm错误 - 读取/ tmp文件

bug*_*ats 10 heroku node.js npm

在get push heroku master部署期间,一些新的依赖或其他一些该死的东西导致npm错误:

-----> 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
Run Code Online (Sandbox Code Playgroud)

not ok确实.没有其他有用的信息打印到控制台,所以当然我想看看该日志文件中的内容.

所以我尝试了一点:

$ heroku run cat /tmp/build_24pmtv04ok0ss/npm-debug.log
Run Code Online (Sandbox Code Playgroud)

但是,似乎不存在这样的文件:

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
Run Code Online (Sandbox Code Playgroud)

我的问题是这样的:

  • 日志文件在哪里?为什么我不能读它?
  • Heroku/npm有没有其他方法可以给我一个打印到控制台的详细错误?
  • 为什么完全相同的节点环境在本地工作正常,但在Heroku上失败?

Mic*_*aev 14

在您完成使用自定义构建包的所有麻烦之前,请尝试使用以下命令在heroku上启用更详细的日志记录输出:

heroku config:set NPM_CONFIG_LOGLEVEL=verbose

有关更多信息,请参阅https://devcenter.heroku.com/articles/troubleshooting-node-deploys.


rya*_*ard 7

当您将代码推送到Heroku时,您的构建将在临时构建dyno上运行,因此一旦构建完成,所有文件都将消失,因为dynos具有临时文件系统.heroku run cat /tmp/build_24pmtv04ok0ss/npm-debug.log没有帮助的原因是你使用现有应用程序的新文件系统附加到一次性dyno(完全独立于构建dyno).

所有希望都没有失去.你应该能够看到发生了什么事情由扭捏buildpack来cat了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
Run Code Online (Sandbox Code Playgroud)

我还没有彻底的测试,但我做了一个快速叉的的默认节点buildpack到做什么,我只是上面显示.通过将其设置为自定义构建包,随意尝试:

heroku config:add BUILDPACK_URL="https://github.com/ryanbrainard/heroku-buildpack-nodejs.git"
Run Code Online (Sandbox Code Playgroud)

  • 你是巫师吗这完全做到了。耶赫鲁库。我什至学到了很多。顺便说一句,如果有人在意的话,让我伤心的包裹最终变成了“grunt-express”。 (2认同)