المُشغل المتقدم Edge Runtime في Next.js

من موسوعة حسوب

يعتمد المُشغل الآني المتقدم Edge Runtime في Next.js على واجهات الويب البرمجية Web API التي تُستخدم من قبل البرمجيات الوسيطة أو وجهات API المتقدمة.

الواجهة البرمجية للشبكة

الواجهة البرمجية للتشفير

الواجهة البرمجية لنقل البيانات عبر ويب

واجهة ويب البرمجية Crypto

واجهة ويب البرمجية المعيارية

أساسيات المحرّك V8

متغيرات البيئة

بإمكانك استخدام الملف process.env للوصول إلى متغيرات البيئة عبر next dev و next build. إنّ تنفيذ التعليمة console.log على process.env لن يعرض جميع متغيرات البيئة، وعليك ان تصل إلى المتغيرات مباشرة كالتالي:

console.log(process.env)
// { NEXT_RUNTIME: 'edge' }
console.log(process.env.TEST_VARIABLE)
// { NEXT_RUNTIME: 'edge', TEST_VARIABLE: 'value' }

الواجهات البرمجية غير المدعومة

  • لا تُدعم الواجهة البرمجية الأصلية لبيئة Node.js، فلن تتمكن من القراءة أو الكتابة إلى نظام الملفات.
  • يمكن استخدام node_modules طالما أنها تُنجز باستخدام وحدات ES ولا تستخدم واجهة Node.js البرمجية الأصلية.
  • لا يُسمح باستدعاء require مباشرة، لا بد من استخدام وحدات ES بدلًا منه.
  • عُطلت ميزات لغة JavaScript التالية:
    • eval: تقييم شيفرة JavaScript المُمثَّلة كنص.
    • new Function(evalString): إنشاء دالة جديدة من خلال شيفرة قُدمّت كوسيط argument.
    • WebAssembly.compile
    • WebAssembly.instantiate مع معامل مخزن مؤقت buffer.

قد تحوي شيفرتك في حالات نادرة تعليمات تقييم ديناميكية لا يمكن الوصول إليها وقت التنفيذ ولا يمكن حذفها أثناء عملية treeshaking ويمكنك تسهيل التحقق بالسماح بملفات محددة مع الضبط المُصدَّر مع البرمجيات الوسيطة Middleware أو وجهة الواجهة البرمجية المتقدمة Edge API Route:

export const config = {
  runtime: 'edge', // for Edge API Routes only
  unstable_allowDynamic: [
    '/lib/utilities.js', // allows a single file
    '/node_modules/function-bind/**', // use a glob to allow anything in the function-bind 3rd party module
  ],
}

unstable_allowDynamic هو من نوع glop أو مصفوفة من أنواع glop يؤدي إلى تجاهل تقييم الشيفرة الديناميكية لملفات محددة ويكون نسبةً إلى المجلد الجذر لتطبيقك.

انتبه، إذ إن نُفِّذت هذه التعليمات في المُشغل المتقدم Edge فتتسبب بخطأ وقت التنفيذ.

المصادر

  • الصفحة Edge Runtime من توثيق Next.js الرسمي.