Razzle: أمثلة على النشر على Azure؟

تم إنشاؤها على ١ فبراير ٢٠١٩  ·  4تعليقات  ·  مصدر: jaredpalmer/razzle

أحاول نشر تطبيق razzle على خدمة تطبيقات Azure ولكني أواجه مشكلة في تشغيل الخادم. لقد أنشأت التطبيق وحصلت على مجلد بناء. بعد ذلك ، استخدمت ملف web.config هذا وغيرت نقاط الدخول إلى _build / server.js_. يبدو أن التطبيق يعمل بشكل جيد ، لأنني تحققت من السجلات والكلاسيكية

_🚀 بدأ_

يبدو. عندما أذهب إلى عنوان url الخاص بالتطبيق ، لا أجد أي رد على الإطلاق. مجرد خطأ 500 عند انتهاء مهلة الطلب.

راجعت البناء على جهازي المحلي قيد التشغيل

node build/server.js

وكل شيء يعمل كما هو متوقع.

آمل أن تتمكن من المساعدة.

يعتبر.

stale

التعليق الأكثر فائدة

مرحبا،

من المحتمل أن يكون هذا مرتبطًا بالرقم 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 " على بلدي المحلي ، يظهر لي خطأ يفيد بعدم العثور على الأصول. هل يمكن أن تنصح في هذا؟

تضمين التغريدة
هل يعمل إذا قمت بالتعليق على السطر الذي نحذف فيه "process.env.PUBLIC_PATH" من التعريفات؟

تضمين التغريدة
هل يعمل إذا قمت بالتعليق على السطر الذي نحذف فيه "process.env.PUBLIC_PATH" من التعريفات؟

شكرا fabianishere على الاستجابة السريعة. سيئًا ، أثناء إجراء تغيير الرمز المقترح ، وجدت مشكلة الرمز المخصص في طريقة التعديل.
الكود الخاص بك يعمل بشكل جيد تماما دون أي تغيير !! يستبدل التكوين المخصص الذي تم إنشاؤه بواسطتك قيمة المنفذ المشفر الثابت بـ process.env.PORT في ملف server.js المجمع.

شكرا جزيلا. :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

Ronny25 picture Ronny25  ·  5تعليقات

jcblw picture jcblw  ·  4تعليقات

sebmor picture sebmor  ·  4تعليقات

alexjoyner picture alexjoyner  ·  3تعليقات

MaxGoh picture MaxGoh  ·  4تعليقات