Razzle: ¿Ejemplos de implementación en Azure?

Creado en 1 feb. 2019  ·  4Comentarios  ·  Fuente: jaredpalmer/razzle

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.

stale

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

Todos 4 comentarios

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 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="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. :)

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

corydeppen picture corydeppen  ·  3Comentarios

howardya picture howardya  ·  5Comentarios

Ronny25 picture Ronny25  ·  5Comentarios

krazyjakee picture krazyjakee  ·  3Comentarios

gabimor picture gabimor  ·  3Comentarios