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 ?
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 ?
Commentaire le plus utile
Peut-être quelque chose comme ça ?