أحاول نشر تطبيق 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 " على بلدي المحلي ، يظهر لي خطأ يفيد بعدم العثور على الأصول. هل يمكن أن تنصح في هذا؟
تضمين التغريدة
هل يعمل إذا قمت بالتعليق على السطر الذي نحذف فيه "process.env.PUBLIC_PATH" من التعريفات؟
تضمين التغريدة
هل يعمل إذا قمت بالتعليق على السطر الذي نحذف فيه "process.env.PUBLIC_PATH" من التعريفات؟
شكرا fabianishere على الاستجابة السريعة. سيئًا ، أثناء إجراء تغيير الرمز المقترح ، وجدت مشكلة الرمز المخصص في طريقة التعديل.
الكود الخاص بك يعمل بشكل جيد تماما دون أي تغيير !! يستبدل التكوين المخصص الذي تم إنشاؤه بواسطتك قيمة المنفذ المشفر الثابت بـ process.env.PORT في ملف server.js المجمع.
شكرا جزيلا. :)
التعليق الأكثر فائدة
مرحبا،
من المحتمل أن يكون هذا مرتبطًا بالرقم 356 (يتم تضمين المتغيرات البيئية مثل
PORT
أثناء وقت الإنشاء). يحدد IISNode الأنبوب المسمى للاستماع عبرPORT
، ولكن لا يتم التقاط هذا من قبل الخادم ، حيث سيقوم Razzle بتضمين الوصول إلىprocess.env.PORT
(ربما إلى 3000) أثناء وقت الإنشاء.نستخدم هذا الحل البديل في
razzle.config.js
لمنع تضمينPORT
: