Razzle: Примеры развертывания в Azure?

Созданный на 1 февр. 2019  ·  4Комментарии  ·  Источник: jaredpalmer/razzle

Я пытаюсь развернуть приложение 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;
    },
};

Все 4 Комментарий

Привет,

Скорее всего, это связано с # 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.

Большое спасибо. :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

pseudo-su picture pseudo-su  ·  3Комментарии

Jayphen picture Jayphen  ·  4Комментарии

alexjoyner picture alexjoyner  ·  3Комментарии

jcblw picture jcblw  ·  4Комментарии

dizzyn picture dizzyn  ·  3Комментарии