【问题标题】:Heroku failing to run node ES6 codeHeroku 无法运行节点 ES6 代码
【发布时间】:2018-01-21 16:20:21
【问题描述】:

我有一个使用 express-generator 生成的快速应用程序,并在 babel 中添加了将所有内容转换为 bin 文件。

我也加了package.json

"engines": {
  "node": ">= v8.9.0"
 }

以确保它运行的节点版本与我的本地环境相同。

由于某种原因,一旦我添加了使用 es6 类语法的服务,应用程序就无法运行:

export default class GifService {}

我在日志中得到的唯一错误是

2018-01-21T16:13:48.175448+00:00 heroku[路由器]: at=error code=H10 desc="应用程序崩溃" 方法=GET 路径="/" 主机=温柔深度-57675.herokuapp.com request_id=a4c00cb7-5071-4883-a730-6355409d6aa2 fwd="86.28.187.108" dyno=连接=服务=状态=503字节=协议=https

这没什么帮助。

当我使用async/await 时,我也遇到了同样的问题。有人遇到过这种情况吗?

谢谢

【问题讨论】:

  • 我应该注意到我有一个带有以下 web: node bin/app.js 的 procfile,它告诉 heroku 从 bin / transpiled 文件运行我的应用程序
  • 很难根据关于您项目的如此薄弱的信息来判断...您是否知道 Heroku 默认不会安装您的 devDependencies?为了强制您需要在 ENV 变量中设置 NPM_CONFIG_PRODUCTION=false。
  • 是的,我知道这一点。我实际上是在本地运行构建,并且所有都从bin/app.js 在本地运行。然后我将整个项目部署到heroku,如前所述,我的procfile 指定从bin/app.js 运行
  • 与本地设置相比,部署到 heroku 时肯定存在差异。我会尝试将日志放在服务器代码中并通过 ssh 连接到测功机,看看是否能提供更多线索:devcenter.heroku.com/changelog-items/1112
  • @PhilippeLeefsma 这些差异是我想要深入了解的。我在同一个节点版本中运行完全相同的转译代码。还有什么可以不同的?至于日志,我已经这样做了。我已将代码剥离为基础。只有当我放入 es6 类或 async / await 语法时,它才会中断并显示我在原始帖子中发布的错误。

标签: javascript node.js heroku


【解决方案1】:

看起来这是我的 babel 预设的问题。

我试图用一堆插件转译到第 2 阶段

旧的.babelrc

{
  "presets": [
    "es2015",
    "stage-2"
  ],
  "plugins": [
    "transform-runtime",
    "syntax-async-functions",
    "transform-regenerator"
  ]
}

我猜 Heroku 不支持此功能。

我已经将我的 babel 预设更改为以下内容:

新的.babelrc

{
  "presets": [
    ["env", {
      "targets": {
        "node": "current"
      }
    }]
  ]
}

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多