Razzle: Exemplos de implantação no Azure?

Criado em 1 fev. 2019  ·  4Comentários  ·  Fonte: jaredpalmer/razzle

Estou tentando implantar um aplicativo Razzle em um Serviço de Aplicativo do Azure, mas estou tendo problemas para executar o servidor. Eu construí o aplicativo e tenho uma pasta de construção. Então, usei este arquivo web.config e alterei os pontos de entrada para _build / server.js_. O aplicativo parece funcionar bem, porque verifiquei os registros e o clássico

_🚀 começou_

parece. Quando eu vou para o url do aplicativo, não há resposta alguma. Apenas um erro 500 quando a solicitação atinge o tempo limite.

Eu verifiquei a compilação em minha máquina local em execução

node build/server.js

e tudo funciona conforme o esperado.

Espero que você possa ajudar.

Cumprimentos.

stale

Comentários muito úteis

Oi,

Isso provavelmente está relacionado a # 356 (variáveis ​​ambientais como PORT estão sendo embutidas durante o tempo de compilação). IISNode especifica o pipe nomeado para escutar por meio de PORT , mas isso não é detectado pelo servidor, pois o Razzle embutirá o acesso a process.env.PORT (provavelmente a 3000) durante o tempo de compilação.

Usamos esta solução alternativa em razzle.config.js para evitar o inlining 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 comentários

Oi,

Isso provavelmente está relacionado a # 356 (variáveis ​​ambientais como PORT estão sendo embutidas durante o tempo de compilação). IISNode especifica o pipe nomeado para escutar por meio de PORT , mas isso não é detectado pelo servidor, pois o Razzle embutirá o acesso a process.env.PORT (provavelmente a 3000) durante o tempo de compilação.

Usamos esta solução alternativa em razzle.config.js para evitar o inlining 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;
    },
};

Oi,

Isso provavelmente está relacionado a # 356 (variáveis ​​ambientais como PORT estão sendo embutidas durante o tempo de compilação). IISNode especifica o pipe nomeado para escutar por meio de PORT , mas isso não é detectado pelo servidor, pois o Razzle embutirá o acesso a process.env.PORT (provavelmente a 3000) durante o tempo de compilação.

Usamos esta solução alternativa em razzle.config.js para evitar o inlining 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;
    },
};

Tentei esta configuração, mas quando tento o comando 'npm run start: prod ' no meu local, recebo um erro que não foi encontrado assets.json. você poderia por favor aconselhar sobre isso?

@vbutani
Funciona se você comentar a linha onde excluímos 'process.env.PUBLIC_PATH' das definições?

@vbutani
Funciona se você comentar a linha onde excluímos 'process.env.PUBLIC_PATH' das definições?

Obrigado @fabianishere pela resposta rápida. Meu mal, ao fazer a mudança de código sugerida, encontrei meu problema de código personalizado no método de modificação.
Seu código funciona perfeitamente bem sem qualquer alteração !! A configuração customizada criada por você substitui o valor PORT codificado permanentemente por process.env.PORT no server.js empacotado.

Muito obrigado. :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

alexjoyner picture alexjoyner  ·  3Comentários

JacopKane picture JacopKane  ·  3Comentários

howardya picture howardya  ·  5Comentários

pseudo-su picture pseudo-su  ·  3Comentários

corydeppen picture corydeppen  ·  3Comentários