Estoy intentando implementar una aplicación Razzle en un servicio de aplicaciones de Azure, pero tengo problemas para ejecutar el servidor. Creé la aplicación y obtuve una carpeta de compilación. Luego, utilicé este archivo web.config y cambié los puntos de entrada a _build / server.js_. La aplicación parece funcionar bien, porque verifiqué los registros y el clásico
_🚀 comenzó_
aparece. Cuando voy a la URL de la aplicación, no hay respuesta alguna. Solo un error 500 cuando se agota el tiempo de espera de la solicitud.
Verifiqué la compilación en mi máquina local ejecutándose
node build/server.js
y todo funciona como se esperaba.
Espero que puedas ayudar
Saludos.
Hola,
Lo más probable es que esto esté relacionado con # 356 (las variables ambientales como PORT
se integran durante el tiempo de compilación). IISNode especifica el canal con nombre para escuchar a través de PORT
, pero el servidor no lo detecta, ya que Razzle incluirá el acceso a process.env.PORT
(probablemente a 3000) durante el tiempo de compilación.
Usamos esta solución alternativa en razzle.config.js
para evitar incluir 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;
},
};
Hola,
Lo más probable es que esto esté relacionado con # 356 (las variables ambientales como
PORT
se integran durante el tiempo de compilación). IISNode especifica el canal con nombre para escuchar a través dePORT
, pero el servidor no lo detecta, ya que Razzle incluirá el acceso aprocess.env.PORT
(probablemente a 3000) durante el tiempo de compilación.Usamos esta solución alternativa en
razzle.config.js
para evitar incluirPORT
: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; }, };
Probé esta configuración pero cuando intento el comando 'npm run start: prod ' en mi local, aparece un error que no se encuentra assets.json. ¿Podrías aconsejarme sobre esto?
@vbutani
¿Funciona si comenta la línea donde eliminamos 'process.env.PUBLIC_PATH' de las definiciones?
@vbutani
¿Funciona si comenta la línea donde eliminamos 'process.env.PUBLIC_PATH' de las definiciones?
Gracias @fabianishere por la rápida respuesta. Mi mal, mientras hacía el cambio de código sugerido, encontré mi problema de código personalizado en el método de modificación.
¡Tu código funciona perfectamente sin ningún cambio! La configuración personalizada creada por usted reemplaza el valor PORT codificado de forma rígida con process.env.PORT en el paquete server.js.
Muchas gracias. :)
Comentario más útil
Hola,
Lo más probable es que esto esté relacionado con # 356 (las variables ambientales como
PORT
se integran durante el tiempo de compilación). IISNode especifica el canal con nombre para escuchar a través dePORT
, pero el servidor no lo detecta, ya que Razzle incluirá el acceso aprocess.env.PORT
(probablemente a 3000) durante el tiempo de compilación.Usamos esta solución alternativa en
razzle.config.js
para evitar incluirPORT
: