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.
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 dePORT
, mas isso não é detectado pelo servidor, pois o Razzle embutirá o acesso aprocess.env.PORT
(provavelmente a 3000) durante o tempo de compilação.Usamos esta solução alternativa em
razzle.config.js
para evitar o inliningPORT
: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. :)
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 dePORT
, mas isso não é detectado pelo servidor, pois o Razzle embutirá o acesso aprocess.env.PORT
(provavelmente a 3000) durante o tempo de compilação.Usamos esta solução alternativa em
razzle.config.js
para evitar o inliningPORT
: