13

一些新的依赖或其他该死的东西导致 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 上却失败了?
4

2 回答 2

26

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

heroku config:set NPM_CONFIG_LOGLEVEL=verbose

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

于 2015-07-14T15:52:26.517 回答
9

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

所有的希望都不会丢失。您应该能够通过将 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

我还没有彻底测试过它,但是我对默认的 Node buildpack做了一个快速的fork完成我刚刚在上面展示的操作通过将其设置为自定义 buildpack随意尝试:

heroku config:add BUILDPACK_URL="https://github.com/ryanbrainard/heroku-buildpack-nodejs.git"
于 2013-03-22T05:40:12.660 回答