Razzle: Puerto no disponible en Heroku durante la implementación

Creado en 6 sept. 2017  ·  3Comentarios  ·  Fuente: jaredpalmer/razzle

Estoy implementando en Heroku e incluí los siguientes scripts en mi package.json :

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

Desafortunadamente, la var PORT env no se conoce en el momento de la compilación y, en cambio, Heroku la asigna en el tiempo de ejecución, y dado que razzle necesita conocer el puerto en el momento de la compilación, significa que debo compilar antes de iniciar el servidor. Con eso en mente, intenté cambiar mis scripts para que se parecieran a lo siguiente:

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

Desafortunadamente, eso lleva demasiado tiempo y termina vinculando después del tiempo de espera de Heroku de 60 segundos:

2017-09-06T01: 23: 13.536789 + 00: 00 aplicación [web.1]: Compilar cliente ...
2017-09-06T01: 23: 14.395857 + 00: 00 heroku [web.1]: Error R10 (tiempo de espera de arranque) -> El proceso web no se pudo vincular a $ PORT en los 60 segundos posteriores al inicio
2017-09-06T01: 23: 14.395963 + 00: 00 heroku [web.1]: Deteniendo el proceso con SIGKILL
2017-09-06T01: 23: 14.499913 + 00: 00 heroku [web.1]: Proceso finalizado con estado 137
2017-09-06T01: 23: 14.509625 + 00: 00 heroku [web.1]: el estado cambió de comenzar a fallar

¿Existe alguna forma de que no podamos solicitar el puerto en el momento de la compilación? ¿Por qué es necesario entonces de todos modos?

Comentario más útil

// 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
  },
}

¿Quizás algo como esto?

Todos 3 comentarios

Puedes usar razzle-heroku :) Extiende la configuración predeterminada de razzle para que funcione en heroku.

Ahh, no sabía nada de eso, ¡gracias por señalarlo! Si ya tengo razzle.config.js con una función modify , ¿hay alguna forma de que pueda usarla mientras también hago uso de 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
  },
}

¿Quizás algo como esto?

¿Fue útil esta página
0 / 5 - 0 calificaciones