Razzle: Порт недоступен на Heroku во время развертывания

Созданный на 6 сент. 2017  ·  3Комментарии  ·  Источник: jaredpalmer/razzle

Я развертываюсь на Heroku, и я включил следующие скрипты в свой package.json :

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

К сожалению, переменная PORT env не известна во время сборки и вместо этого назначается 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 (тайм-аут загрузки) -> Веб-процессу не удалось выполнить привязку к $ PORT в течение 60 секунд после запуска
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.config.js с пользовательской функцией modify , могу ли я все еще использовать ее, используя 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 рейтинги

Смежные вопросы

krazyjakee picture krazyjakee  ·  3Комментарии

sebmor picture sebmor  ·  4Комментарии

Ronny25 picture Ronny25  ·  5Комментарии

kkarkos picture kkarkos  ·  3Комментарии

dizzyn picture dizzyn  ·  3Комментарии