Vm2: أضف وحدة "coffee-script" كعنصر تبعية

تم إنشاؤها على ٨ أبريل ٢٠١٧  ·  23تعليقات  ·  مصدر: patriksimek/vm2

أثناء تشغيل الوحدة النمطية الخاصة بك عبر الكود الذي تم تحويله بواسطة webpack / babel ، أواجه المشكلة التالية:

Module not found: Error: Can't resolve 'coffee-script' in '/node_modules/vm2/lib'
 @ ./~/vm2/lib/main.js 19:10-34
 @ ./~/vm2/index.js
 @ ./lib/config.js
 @ ./lib/server.js

https://github.com/patriksimek/vm2/blob/master/lib/main.js#L19

في هذا السطر ، أنت تستخدم الوحدة النمطية coffee-script ، لكن لم يتم تعريفها على أنها تبعية للوحدة النمطية.
لذلك عندما يحاول webpack تعيين جميع المتطلبات ، فإنه يتعطل لأنه لا يمكنه العثور على الوحدة النمطية coffee-script في أي مكان.

محدث: هذا ليس طلب ميزة ، هذه مشكلة تبعيات وحدة vm2. حتى يتوفر هذا السطر في هذه الوحدة ، فلن تعمل مع خيار المترجم المحدد كـ coffee-script في أي بيئة بدون تثبيت وحدة برنامج نصي القهوة.

wontfix

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

dkfiresky واو ، هل توقعت مني حقًا إجبار عشرات الآلاف من المستخدمين على تنزيل برنامج نصي القهوة حتى لو لم يكونوا بحاجة إليه لمجرد أنك لست على استعداد لانتظار الحل المناسب؟ هذا محزن.

@ n-riesco في الواقع هذا مدعوم بالفعل. تكمن المشكلة في أن إسقاط الدعم لخيار coffeescript هو تغيير فاصل وأود تجربة حل أفضل أولاً (إن وجد).

ال 23 كومينتر

شكرا لك على إعادة المشكلة. ليس لدي أي تجارب تقريبًا مع Webpack ، لذا فأنا مخطئ تقريبًا ، ولكن ماذا لو أضفت coffee-script كاعتماد في المشروع الرئيسي؟ أفترض أن عمليات Webpack تتطلب نفس الطريقة التي تتطلبها Node - فهي تبحث في جميع مجلدات node_modules حتى الجذر.

لا أريد إضافة coffee-script كتبعية لمشروعي الخاص فقط لأن وحدتك تتطلب ذلك. لا أستخدم coffee-script .

إذا كنت تستخدم وحدة شخص ما في مشروعك الخاص ، فيجب أن تعلن عنها على أنها تبعية.

أيضًا إذا قام شخص ما بتثبيت الوحدة النمطية الخاصة بك ولم يكن لدى هذا الشخص وحدة coffee-script مثبتة في أي مكان (في مشروع أو عالمي) ، فسيؤدي ذلك أيضًا إلى ظهور هذا الخطأ. لا يعتمد على Webpack.

حسنًا ، اعتقدت أنك تستخدم نص قهوة. في هذه الحالة ، هذه المكتبة ليست ماكينة صراف آلي متوافقة مع webpack. سأحاول معرفة ذلك إذا كان لدي بعض وقت الفراغ.

هذه ليست حالة توافق مع حزمة الويب.

إنها حالة تتعلق بكيفية نشر الوحدة الخاصة بك وتقديمها إلى npm.

لا أوافق ، تعمل هذه المكتبة بدون برنامج نصي القهوة بشكل صحيح ، لذا لا يوجد سبب لربطها بالتبعية المطلوبة. يتم استخدامه فقط عندما يذكر المستخدم صراحة أنه يريد استخدام نص القهوة. سأقوم بإعادة تشكيل هذا إلى نوع من آلية البرنامج المساعد.

السبب هو أنك تطلب صراحة coffee-script في التعليمات البرمجية الخاصة بك ، والتي تفترض أنه يجب تثبيتها بطريقة ما.

إذا كنت قد قمت بالفعل بتثبيت coffee-script على جهازك - فهذا جيد وسيعمل ، وإلا فسوف يتسبب ذلك في مشكلة عندما لا يكون لديّ coffee-script مثبتًا في أي مكان وقمت بتشغيل vm مع مجموعة خيارات المترجم إلى أحد "coffeescript" أو "coffee-script" أو "cs" أو "text / coffeescript" (كما هو مذكور في https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- L18).

كما أنني لا أوافق على أن هذا هو feature request لأن الوحدة النمطية الخاصة بك لا تعمل مع مترجم coffee-script إذا لم يكن مثبتًا بالفعل. ولا تذكر الوثائق شيئًا عن طلب coffee-script للتثبيت المسبق.

نعم ، لقد وصفت بدقة كيفية عملها الآن. تتوقع المكتبة أن يكون لدى المستخدم نص قهوة مثبت إذا تم ضبط المترجم على القهوة.

أنت محق بشأن المستندات ، لقد تم تحديثها.

نعم ، إصلاح التوثيق لا يحل المشكلة. لا يزال لديك سطر require('coffee-script') في شفرتك ، والذي سينتج الخطأ ، على الأقل لحزمة الويب.

نعم ، وكما كتبت في المنشور السابق ، سأقوم بإعادة تشكيل هذا النوع من آلية المكونات الإضافية بحيث يكون متوافقًا مع حزمة الويب.

لا تهتم ، إذا كان من الصعب عليك تشغيل أمر واحد بسيط:

> npm install coffee-script --save

لن أستخدم أو أنتظر مشروعك لإصلاح المشكلة بعد الآن.

patriksimek شخصيًا ، أرى فائدة وجود نوع من آلية البرنامج المساعد.

ماذا عن شيء بسيط مثل options.compiler كونه دالة؟

ثم يمكن للمستخدمين الذين يحتاجون إلى CoffeeScript تعيين options.compiler إلى (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); } .

dkfiresky واو ، هل توقعت مني حقًا إجبار عشرات الآلاف من المستخدمين على تنزيل برنامج نصي القهوة حتى لو لم يكونوا بحاجة إليه لمجرد أنك لست على استعداد لانتظار الحل المناسب؟ هذا محزن.

@ n-riesco في الواقع هذا مدعوم بالفعل. تكمن المشكلة في أن إسقاط الدعم لخيار coffeescript هو تغيير فاصل وأود تجربة حل أفضل أولاً (إن وجد).

patriksimek أتوقع منك تقديم الوحدة الخاصة بك بشكل صحيح. استخدام نص القهوة هو مسؤوليتك الخاصة. إذا كنت تستخدمها ، فيجب عليك تعريفها على أنها تبعية. إذا كنت لا توافق ، فقم بإزالة بيان يتطلب وخيار المترجم الذي ينص على coffee-script كخيار.

تم إنشاء هذه المشكلة لأن الوحدة النمطية الخاصة بك لا تعمل خارج الصندوق. إن الانتظار لمدة 18 يومًا حتى تقوم بتشغيل أمر تثبيت بسيط يبدو وكأنه مزحة.

علاوة على ذلك ، إذا ذكرت أن الوحدة النمطية الخاصة بك تجمع coffee-script ، فيجب عليك تسليم هذه الوحدة كعنصر تبعية في package.json الخاص بك .

لقد توقعت مني حقًا أن أجبر عشرات الآلاف من المستخدمين على تنزيل برنامج قهوة

هذا ما فعلته بـ require('coffee-script') في شفرتك . تتوقع مني تثبيت سيناريو القهوة حتى لو لم أستخدمه.

إن الانتظار لمدة 18 يومًا حتى تقوم بتشغيل أمر تثبيت بسيط يبدو وكأنه مزحة.

أنت ما زلت تتوقع مني أن أفعل ما قلته لن أفعله أبدًا. مرة أخرى - هذه الوحدة ليست متوافقة مع Webpack في الوقت الحالي ، من فضلك ، لا تستخدم هذه المكتبة.

patriksimek هذه الوحدة غير متوافقة ولا يمكن تشغيلها في أي بيئة بدون تثبيت coffee-script .

dkfiresky بالتأكيد ، إذا كنت تعتقد ذلك. لم أعد مهتمًا بإقناعك أنك مخطئ. هل يمكننا من فضلك وقف هذا النقاش غير المجدي؟

@ patriksimek نعم بالتأكيد. يرجى الذهاب لقراءة بعض مستندات npm.

لقد حصلت على هذا أيضًا في مشروع رد فعل جديد ، قبل أن أضيف vm2 كاعتماد ، لم يكن لدي أي أخطاء حول برنامج القهوة

Failed to compile.

/Users/mark/node_modules/coffee-script/lib/coffee-script/coffee-script.js
Module not found: Can't resolve 'module' in '/Users/mark/node_modules/coffee-script/lib/coffee-script'

على الرغم من أن نغمة المناقشة لم تكن بناءة للغاية ، أعتقد حقًا أنه يجب إضافة coffee-script كتبعية. سيكون حلاً بسيطًا للغاية وسيسمح باستخدام هذه الحزمة في بيئات مختلفة (مثل Webpack و Next وما إلى ذلك).

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

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

patriksimek picture patriksimek  ·  15تعليقات

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

CapacitorSet picture CapacitorSet  ·  13تعليقات

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

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