【问题标题】:Heroku: troubleshooting npm errors during deploy - reading a /tmp fileHeroku:在部署期间排除 npm 错误 - 读取 /tmp 文件
【发布时间】:2013-03-11 16:49:57
【问题描述】:

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

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 上却失败了?

【问题讨论】:

    标签: node.js heroku npm


    【解决方案1】:

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

    heroku config:set NPM_CONFIG_LOGLEVEL=verbose

    更多信息请参见https://devcenter.heroku.com/articles/troubleshooting-node-deploys

    【讨论】:

    • 希望这是一个可用于失败部署的按钮:/
    【解决方案2】:

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

    所有希望都不会丢失。您应该能够看到tweaking the buildpackcatnpm-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
    

    我还没有彻底测试过它,但我快速地从forkdefault Node buildpackdo what I just showed above。欢迎通过setting it as a custom buildpack 试用:

    heroku config:add BUILDPACK_URL="https://github.com/ryanbrainard/heroku-buildpack-nodejs.git"
    

    【讨论】:

    • 你是个巫师吗,这完全成功了。耶赫罗库。我什至学到了很多东西。顺便说一句,如果有人在乎的话,让我伤心的包裹最终变成了grunt-express
    • 很高兴它对你有用。刚刚以pull request 的形式发送了我的零钱。
    • 此修复已合并到官方 Heroku Node.js 构建包中:github.com/heroku/heroku-buildpack-nodejs/commit/…
    • @ryanbrainard - 很晚的评论,但无论如何都可以转储npm-debug.log(Heroku 上的本地或远程),您以后可以在其中阅读它(或目录)?
    • @GiladPeleg:因为这是merged into the default Node buildpack,它应该会在出错时自动发生并打印到STDOUT,所以你会在推送失败时看到它。如果你想一直看到它,你可以 fork 构建包并在构建结束时打印它(假设 NPM 总是创建,即使成功)。
    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 2022-07-11
    • 2018-03-11
    • 2020-04-06
    • 2021-10-21
    • 2020-07-14
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多