Razzle: 部署期间 Heroku 上的端口不可用

创建于 2017-09-06  ·  3评论  ·  资料来源: jaredpalmer/razzle

我正在部署到 Heroku,并且在package.json包含了以下脚本:

"scripts": {
  "heroku-postbuild": "yarn run build"
  "start": "NODE_ENV=production node build/server.js"
}

不幸的是, PORT变量在构建时是未知的,而是在运行时由 Heroku 分配,并且由于 razzle 需要在构建时知道端口,这意味着我必须在启动服务器之前进行构建。 考虑到这一点,我尝试将脚本更改为如下所示:

"scripts": {
  "start": "NODE_ENV=production yarn run build && node build/server.js"
}

不幸的是,这花费了太长时间并在 60 秒 Heroku 超时后绑定:

2017-09-06T01:23:13.536789+00:00 app[web.1]: 编译客户端...
2017-09-06T01:23:14.395857+00:00 heroku[web.1]: 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT
2017-09-06T01:23:14.395963+00:00 heroku[web.1]:使用 SIGKILL 停止进程
2017-09-06T01:23:14.499913+00:00 heroku[web.1]:进程以状态 137 退出
2017-09-06T01:23:14.509625+00:00 heroku[web.1]:状态从开始变为崩溃

有没有办法在构建时不需要端口? 为什么需要它呢?

最有用的评论

// razzle.config.js
const razzleHeroku = require("razzle-heroku")

module.exports = {
  modify: (config, {target, dev}, webpack) => {
    config = razzleHeroku(config, {target, dev}, webpack)
    // do something to config

    return config
  },
}

也许是这样的?

所有3条评论

您可以使用razzle-heroku :) 它扩展了默认的 razzle 配置,使其适用于 heroku。

啊啊,不知道,谢谢指点! 如果我已经有了带有自定义modify函数的razzle.config.js ,有没有办法在使用 razzle-heroku 的同时仍然可以使用它?

// razzle.config.js
const razzleHeroku = require("razzle-heroku")

module.exports = {
  modify: (config, {target, dev}, webpack) => {
    config = razzleHeroku(config, {target, dev}, webpack)
    // do something to config

    return config
  },
}

也许是这样的?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

alexjoyner picture alexjoyner  ·  3评论

jcblw picture jcblw  ·  4评论

corydeppen picture corydeppen  ·  3评论

MaxGoh picture MaxGoh  ·  4评论

howardya picture howardya  ·  5评论