Я пытаюсь развернуть приложение razzle в службе приложений Azure, но у меня возникают проблемы с запуском сервера. Я собрал приложение и получил папку для сборки. Затем я использовал этот файл web.config и изменил точки входа на _build / server.js_. Кажется, приложение работает нормально, потому что я проверил логи и классический
_🚀 началось_
появляется. Когда я перехожу к URL-адресу приложения, никакого ответа нет. Просто ошибка 500 при истечении времени ожидания запроса.
Я проверил сборку на своем локальном компьютере, работающем
node build/server.js
и все работает как положено.
Надеюсь, ты сможешь помочь.
С Уважением.
Привет,
Скорее всего, это связано с # 356 (переменные среды, такие как PORT
, встроены во время сборки). IISNode указывает именованный канал для прослушивания через PORT
, но сервер не принимает его, так как Razzle встроит доступ к process.env.PORT
(вероятно, до 3000) во время сборки.
Мы используем этот обходной путь в razzle.config.js
чтобы предотвратить встраивание 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;
},
};
Привет,
Скорее всего, это связано с # 356 (переменные среды, такие как
PORT
, встроены во время сборки). IISNode указывает именованный канал для прослушивания черезPORT
, но сервер не принимает его, так как Razzle встроит доступ кprocess.env.PORT
(вероятно, до 3000) во время сборки.Мы используем этот обходной путь в
razzle.config.js
чтобы предотвратить встраивание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; }, };
Я пробовал эту конфигурацию, но когда я пытаюсь выполнить команду npm run start: prod на моем локальном компьютере, я получаю сообщение об ошибке, что assets.json не найден. не могли бы вы посоветовать в этом?
@vbutani
Будет ли работать, если вы закомментируете строку, в которой мы удалим process.env.PUBLIC_PATH из определений?
@vbutani
Будет ли работать, если вы закомментируете строку, в которой мы удалим process.env.PUBLIC_PATH из определений?
Спасибо @fabianishere за быстрый ответ. Мое плохое, когда я предлагал изменить код, я обнаружил свою проблему с пользовательским кодом в методе изменения.
Ваш код полностью работает без каких-либо изменений !! Созданная вами настраиваемая конфигурация заменяет жестко запрограммированное значение PORT на process.env.PORT в связанном server.js.
Большое спасибо. :)
Самый полезный комментарий
Привет,
Скорее всего, это связано с # 356 (переменные среды, такие как
PORT
, встроены во время сборки). IISNode указывает именованный канал для прослушивания черезPORT
, но сервер не принимает его, так как Razzle встроит доступ кprocess.env.PORT
(вероятно, до 3000) во время сборки.Мы используем этот обходной путь в
razzle.config.js
чтобы предотвратить встраиваниеPORT
: