Ich versuche, eine Razzle-App für einen Azure App Service bereitzustellen, habe jedoch Probleme beim Ausführen des Servers. Ich habe die App erstellt und einen Build-Ordner erhalten. Dann habe ich diese web.config- Datei verwendet und die Einstiegspunkte in _build/server.js_ geändert. Die App scheint ok zu laufen, da ich die Logs und den Klassiker überprüft habe
_🚀 begonnen_
erscheint. Wenn ich auf die URL der App gehe, gibt es überhaupt keine Antwort. Nur ein Fehler 500, wenn die Anforderung das Zeitlimit überschreitet.
Ich habe den Build auf meinem lokalen Computer überprüft
node build/server.js
und alles funktioniert wie erwartet.
Hoffe ihr könnt helfen.
Grüße.
Hallo,
Dies hängt höchstwahrscheinlich mit #356 zusammen (Umgebungsvariablen wie PORT
werden während der Buildzeit eingebunden). IISNode gibt die Named Pipe an, auf der über PORT
lauscht, aber dies wird vom Server nicht übernommen, da Razzle den Zugriff auf process.env.PORT
(wahrscheinlich auf 3000) während der Build-Zeit einfügt.
Wir verwenden diese Problemumgehung in razzle.config.js
, um das Inlining von PORT
zu verhindern:
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;
},
};
Hallo,
Dies hängt höchstwahrscheinlich mit #356 zusammen (Umgebungsvariablen wie
PORT
werden während der Buildzeit eingebunden). IISNode gibt die Named Pipe an, auf der überPORT
lauscht, aber dies wird vom Server nicht übernommen, da Razzle den Zugriff aufprocess.env.PORT
(wahrscheinlich auf 3000) während der Build-Zeit einfügt.Wir verwenden diese Problemumgehung in
razzle.config.js
, um das Inlining vonPORT
zu verhindern: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; }, };
Ich habe diese Konfiguration ausprobiert, aber wenn ich den Befehl 'npm run start:prod ' auf meinem Local versuche, erhalte ich eine Fehlermeldung, dass Assets.json nicht gefunden wurde. Könnten Sie bitte diesbezüglich beraten?
@vbutani
Funktioniert es, wenn Sie die Zeile auskommentieren, in der wir 'process.env.PUBLIC_PATH' aus den Definitionen löschen?
@vbutani
Funktioniert es, wenn Sie die Zeile auskommentieren, in der wir 'process.env.PUBLIC_PATH' aus den Definitionen löschen?
Danke @fabianishere für die schnelle Antwort. Mein Fehler, während ich die vorgeschlagene Codeänderung durchführte, fand ich mein Problem mit dem benutzerdefinierten Code in der Modify-Methode.
Ihr Code funktioniert völlig ohne Änderung!! Die von Ihnen erstellte benutzerdefinierte Konfiguration ersetzt den hartcodierten PORT-Wert durch process.env.PORT in gebündeltem server.js.
Vielen Dank. :)
Hilfreichster Kommentar
Hallo,
Dies hängt höchstwahrscheinlich mit #356 zusammen (Umgebungsvariablen wie
PORT
werden während der Buildzeit eingebunden). IISNode gibt die Named Pipe an, auf der überPORT
lauscht, aber dies wird vom Server nicht übernommen, da Razzle den Zugriff aufprocess.env.PORT
(wahrscheinlich auf 3000) während der Build-Zeit einfügt.Wir verwenden diese Problemumgehung in
razzle.config.js
, um das Inlining vonPORT
zu verhindern: