Jsdom: "طلب التبعية هو تعبير" (عند التجميع مع Webpack)

تم إنشاؤها على ٢٤ نوفمبر ٢٠١٧  ·  5تعليقات  ·  مصدر: jsdom/jsdom

معلومات أساسية:

  • إصدار Node.js: 8.9.1
  • إصدار jsdom

عند تجميع تطبيق الخادم (الذي يستخدم JSDOM داخليًا) مع حزمة الويب ، أحصل على التحذير التالي:

WARNING in .../node_modules/jsdom/lib/jsdom/utils.js
    203:21-40 Critical dependency: the request of a dependency is an expression

الكود المعني هو:

["canvas", "canvas-prebuilt"].some(moduleName => {
  try {
    exports.Canvas = require(moduleName);

على الرغم من أنه قد لا يكون من الشائع جدًا تجميع كود الخادم ، أجد أنه من الجيد جدًا الانتقال من 266 ميجابايت ( src/ و node_modules/ ) إلى ملف JS واحد بحجم 6 ميجابايت (في حالتي).

هل تفكر في إعادة كتابة الاستيراد أعلاه ليكون ثابتًا دائمًا؟ أم أنك ترى هذا على أنه عجز في المجمّع لا يمكنه اكتشاف أنه عمليًا يمكن استنتاج الوحدات الممكنة؟

(إذا تمت إعادة كتابته إلى if بمعلمات require ، فقد لا يزال المستخدمون بحاجة إلى إضافة استثناء حيث لا يتوفر canvas ولا canvas-prebuilt افتراضيًا ، ولكن بعد ذلك على الأقل كان من الممكن معالجة المشكلة صراحةً (وسيتعين على المستخدم التأكد من عدم استخدامه لهذه المشكلة)).

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

تحديث! : رفع اليدين:

الإصلاح بسيط للغاية ، وقد حصلت عليه من مشكلة mocha-webpack : https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. يوجد أيضًا هذا المستند https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md الذي يوصي باستخدام هذا المكون الإضافي.

const nodeExternals = require('webpack-node-externals');

module.exports = {
  externals: [nodeExternals()],
  // etc configs here
}

ال 5 كومينتر

لا ، آسف ، حزمة الويب غير مدعومة.

domenic لماذا لا يتم دعم حزمة الويب؟ إنها إلى حد بعيد أداة التجميع الأكثر شعبية.

لأنه لا يمكنه التعامل مع أنماط التعليمات البرمجية التي يستخدمها jsdom.

@ دومينيك أي نوع من أنماط التعليمات البرمجية؟ يحتوي webpack على سلسلة من الإصدارات طوال الوقت هذه الأيام ، وهناك عدد لا يحصى من المكونات الإضافية. أنا متأكد من أنه يمكننا التوصل إلى بعض الممارسات الجيدة للاستخدام مع حزمة الويب. :د

أنا بالفعل أستخدم jsdom مع حزمة الويب ، والحد الأدنى من أساليب المستند / dom التي أستخدمها تعمل بشكل جيد ، لقد جئت للتو إلى هذه المشكلة بسبب التحذير أعلاه. لقد لاحظت ذلك الآن فقط لأنني أعتقد أن mocha-webpack كان يمنع التحذير ، وقد لاحظت ذلك بعد إلقائه. ومع ذلك ، يمكن أن يكون mocha-webpack لا يقمع أي شيء ، ويقوم بشيء ذكي للتعامل مع هذا ويمكننا استخدام أفضل الممارسات.

تحديث! : رفع اليدين:

الإصلاح بسيط للغاية ، وقد حصلت عليه من مشكلة mocha-webpack : https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. يوجد أيضًا هذا المستند https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md الذي يوصي باستخدام هذا المكون الإضافي.

const nodeExternals = require('webpack-node-externals');

module.exports = {
  externals: [nodeExternals()],
  // etc configs here
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

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

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

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

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

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

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