Razzle: Port non disponible sur Heroku pendant le déploiement

Créé le 6 sept. 2017  ·  3Commentaires  ·  Source: jaredpalmer/razzle

Je déploie sur Heroku et j'ai inclus les scripts suivants dans mon package.json :

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

Malheureusement, la PORT env n'est pas connue au moment de la construction et est plutôt attribuée par Heroku au moment de l'exécution, et puisque razzle a besoin de connaître le port au moment de la construction, cela signifie que je dois compiler avant de démarrer le serveur. Dans cet esprit, j'ai essayé de modifier mes scripts pour qu'ils ressemblent à ce qui suit :

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

Malheureusement, cela prend trop de temps et finit par se lier après le délai d'attente de 60 secondes d'Heroku :

2017-09-06T01:23:13.536789+00:00 application[web.1] : Compilation du client...
2017-09-06T01:23:14.395857+00:00 heroku[web.1] : Erreur R10 (Délai d'expiration du démarrage) -> Le processus Web n'a pas réussi à se lier à $ PORT dans les 60 secondes suivant le lancement
2017-09-06T01:23:14.395963+00:00 heroku[web.1] : Arrêt du processus avec SIGKILL
2017-09-06T01:23:14.499913+00:00 heroku[web.1] : processus terminé avec le statut 137
2017-09-06T01:23:14.509625+00:00 heroku[web.1] : l'état est passé de "start" à "planté"

Existe-t-il un moyen de ne pas exiger le port au moment de la construction ? Pourquoi est-ce nécessaire alors de toute façon ?

Commentaire le plus utile

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

Peut-être quelque chose comme ça ?

Tous les 3 commentaires

Vous pouvez utiliser razzle-heroku :) Il étend la configuration par défaut de razzle pour qu'elle fonctionne sur heroku.

Ahh, je ne savais pas, merci de l'avoir signalé ! Si j'ai déjà razzle.config.js avec une fonction modify , y a-t-il un moyen que je puisse toujours l'utiliser tout en utilisant 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
  },
}

Peut-être quelque chose comme ça ?

Cette page vous a été utile?
0 / 5 - 0 notes