Razzle: A porta não está disponível no Heroku durante a implantação

Criado em 6 set. 2017  ·  3Comentários  ·  Fonte: jaredpalmer/razzle

Estou implantando no Heroku e incluí os seguintes scripts em meu package.json :

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

Infelizmente, o PORT env var não é conhecido no tempo de compilação e, em vez disso, é atribuído pelo Heroku no tempo de execução e, como o razzle precisa saber a porta no tempo de compilação, isso significa que devo compilar antes de iniciar o servidor. Com isso em mente, tentei alterar meus scripts para se parecerem com o seguinte:

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

Infelizmente, isso leva muito tempo e termina após o tempo limite do Heroku de 60 segundos:

2017-09-06T01: 23: 13.536789 + 00: 00 app [web.1]: Compilando cliente ...
2017-09-06T01: 23: 14.395857 + 00: 00 heroku [web.1]: Erro R10 (tempo limite de inicialização) -> O processo da Web falhou ao vincular a $ PORT em 60 segundos após o lançamento
2017-09-06T01: 23: 14.395963 + 00: 00 heroku [web.1]: Parando o processo com SIGKILL
2017-09-06T01: 23: 14.499913 + 00: 00 heroku [web.1]: Processo encerrado com status 137
2017-09-06T01: 23: 14.509625 + 00: 00 heroku [web.1]: Estado alterado de começando a travado

Existe uma maneira de não podermos exigir a porta no momento da construção? Por que é necessário então?

Comentários muito úteis

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

Talvez algo assim?

Todos 3 comentários

Você pode usar o razzle-heroku :) Ele estende a configuração padrão do razzle para fazê-lo funcionar no heroku.

Ahh, não sabia disso, obrigado por apontar isso! Se eu já tiver razzle.config.js com uma função modify , há uma maneira de ainda poder usá-la e, ao mesmo tempo, usar o 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
  },
}

Talvez algo assim?

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

piersolenski picture piersolenski  ·  4Comentários

jcblw picture jcblw  ·  4Comentários

Ronny25 picture Ronny25  ·  5Comentários

dizzyn picture dizzyn  ·  3Comentários

panbanda picture panbanda  ·  5Comentários