J'essaie de déployer une application razzle sur un service d'application Azure, mais je rencontre des problèmes pour exécuter le serveur. J'ai construit l'application et j'ai un dossier de construction. Ensuite, j'ai utilisé ce fichier web.config et changé les points d'entrée en _build/server.js_. L'application semble fonctionner correctement, car j'ai vérifié les journaux et le classique
_🚀 commencé_
apparaît. Quand je vais sur l'url de l'application, il n'y a aucune réponse. Juste une erreur 500 lorsque la demande expire.
J'ai vérifié la construction sur ma machine locale en cours d'exécution
node build/server.js
et tout fonctionne comme prévu.
J'espère que vous pouvez aider.
Salutations.
Salut,
Ceci est très probablement lié à #356 (des variables environnementales telles que PORT
sont intégrées pendant la construction). IISNode spécifie le canal nommé sur lequel écouter via PORT
, mais cela n'est pas récupéré par le serveur, car Razzle intégrera l'accès à process.env.PORT
(probablement à 3000) pendant la construction.
Nous utilisons cette solution de contournement dans razzle.config.js
pour empêcher l'inline PORT
:
module.exports = {
...
modify: (config, { target, dev }, webpack) => {
const appConfig = Object.assign({}, config);
// <strong i="13">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
if (target === 'node') {
const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
const { definitions } = appConfig.plugins[idx];
const newDefs = Object.assign({}, definitions);
delete newDefs['process.env.PORT'];
delete newDefs['process.env.HOST'];
delete newDefs['process.env.PUBLIC_PATH'];
appConfig.plugins = [].concat(appConfig.plugins);
appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
}
return appConfig;
},
};
Salut,
Ceci est très probablement lié à #356 (des variables environnementales telles que
PORT
sont intégrées pendant la construction). IISNode spécifie le canal nommé sur lequel écouter viaPORT
, mais cela n'est pas récupéré par le serveur, car Razzle intégrera l'accès àprocess.env.PORT
(probablement à 3000) pendant la construction.Nous utilisons cette solution de contournement dans
razzle.config.js
pour empêcher l'inlinePORT
:module.exports = { ... modify: (config, { target, dev }, webpack) => { const appConfig = Object.assign({}, config); // <strong i="14">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356 if (target === 'node') { const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin'); const { definitions } = appConfig.plugins[idx]; const newDefs = Object.assign({}, definitions); delete newDefs['process.env.PORT']; delete newDefs['process.env.HOST']; delete newDefs['process.env.PUBLIC_PATH']; appConfig.plugins = [].concat(appConfig.plugins); appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs) } return appConfig; }, };
J'ai essayé cette configuration mais lorsque j'essaie la commande 'npm run start:prod ' sur mon local, j'obtiens une erreur que assets.json n'est pas trouvé. pourriez-vous s'il vous plaît conseiller à ce sujet?
@vbutani
Cela fonctionne-t-il si vous commentez la ligne où nous supprimons « process.env.PUBLIC_PATH » des définitions ?
@vbutani
Cela fonctionne-t-il si vous commentez la ligne où nous supprimons « process.env.PUBLIC_PATH » des définitions ?
Merci @fabianishere pour la réponse rapide. Mon mauvais, tout en faisant une modification de code suggérée, j'ai trouvé mon problème de code personnalisé dans la méthode de modification.
Votre code fonctionne parfaitement sans aucun changement !! La configuration personnalisée que vous avez créée remplace la valeur PORT codée en dur par process.env.PORT dans server.js groupé.
Merci beaucoup. :)
Commentaire le plus utile
Salut,
Ceci est très probablement lié à #356 (des variables environnementales telles que
PORT
sont intégrées pendant la construction). IISNode spécifie le canal nommé sur lequel écouter viaPORT
, mais cela n'est pas récupéré par le serveur, car Razzle intégrera l'accès àprocess.env.PORT
(probablement à 3000) pendant la construction.Nous utilisons cette solution de contournement dans
razzle.config.js
pour empêcher l'inlinePORT
: