مرحبًا davidjgoss و @ charlierudolph!
يبدو أن دعم ESM الذي تم تقديمه في 7.2.0
(# 1589) يكسر عددًا من المراسلين الخارجيين ، لأنه لم يعد يسمح باستيراد الوحدات الفرعية.
يتجلى هذا في خطأ في المشاريع التي تحاول استيراد وحدة فرعية.
على سبيل المثال ، استدعاء أيٍّ من:
const TestCaseHookDefinition = require('@cucumber/cucumber/lib/models/test_case_hook_definition')
أو:
import TestCaseHookDefinition from '@cucumber/cucumber/lib/models/test_case_hook_definition';
النتائج في:
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/models/test_case_hook_definition'
is not defined by "exports" in /path/to/project/node_modules/@cucumber/cucumber/package.json
المشاريع المتأثرة التي أعلم بها (قد يكون هناك المزيد):
@serenity-js/cucumber
على عمليات استيراد الوحدات الفرعية التالية:@cucumber/cucumber/package.js
(لقراءة النسخة)@cucumber/cucumber/lib/models/test_case_hook_definition
- لإنشاء مثيل TestCaseHookDefinition
cucumber-pretty-formatter
- راجع jbpros / cucumber-pretty-formatter # 2 ، والذي يعتمد على التحميل:@cucumber/cucumber/lib/formatter
- IFormatterOptions
@cucumber/cucumber/lib/formatter/helpers
- formatLocation
@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser
- getGherkinExampleRuleMap
، getGherkinScenarioMap
، getGherkinStepMap
@cucumber/cucumber/lib/formatter/helpers/pickle_parser
- getPickleStepMap
@wdio/cucumber-framework
، والذي يتم تحميله:@cucumber/cucumber/lib/support_code_library_builder/types
- ITestCaseHookParameter
@cucumber/cucumber/lib/formatter/helpers/event_data_collector
- EventDataCollector
@cucumber/cucumber/lib/support_code_library_builder/types
- ITestCaseHookParameter
@cucumber/cucumber/lib/runtime
- IRuntimeOptions
هل يمكن لـ Cucumber.js تصدير الفئات والأنواع والوظائف المذكورة أعلاه ، على سبيل المثال ضمن مساحة الاسم reporters
(أو شيء مشابه حتى لا يعترض طريق المستخدمين العاديين):
import { reporters } from '@cucumber/cucumber';
reporters.TestCaseHookDefinition
بدلاً من ذلك ، هل من الممكن التراجع عن هذه التغييرات إذا كان الاقتراح أعلاه يتطلب الكثير من العمل؟
شكرا،
يناير
@ jan-molak
يبدو أن دعم ESM الذي تم تقديمه في 7.2.0 (# 1589) يكسر عددًا من المراسلين الخارجيين ، لأنه لم يعد يسمح باستيراد الوحدات الفرعية.
فقط للتوضيح بسرعة ، يحدث هذا فقط عند استخدام --esm
، أليس كذلك؟
لقد لاحظت المشكلة أيضًا اليوم ، وسأبحث في تأثير توسيع ما نصدره على نقطة الدخول الرئيسية. يبدو معظمها منطقيًا ولكننا سنحتاج إلى توخي الحذر لأننا نضيف أشياء جديدة بشكل فعال إلى عقد واجهة برمجة التطبيقات والذي سيكون التراجع عنه لاحقًا بمثابة تغيير جذري.
مرحباdavidjgoss!
فقط للتوضيح بسرعة ، يحدث هذا فقط عند استخدام --esm ، أليس كذلك؟
لا ، تحدث المشكلة عندما يحاول مشروع خارجي استيراد أي وحدة فرعية من @cucumber/cucumber
.
لقد أعدت إظهار المشكلة هنا - https://github.com/jan-molak/cucumber-js-1646
git clone https://github.com/jan-molak/cucumber-js-1646.git
cd cucumber-js-1646
npm install
npm start
انظر الخطأ:
> [email protected] start /path/to/jan-molak/cucumber-js-1646
> node index.js
internal/modules/cjs/loader.js:438
throw e;
^
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/models/test_case_hook_definition' is not defined by "exports" in /path/to/jan-molak/cucumber-js-1646/node_modules/@cucumber/cucumber/package.json
at throwExportsNotFound (internal/modules/esm/resolve.js:290:9)
at packageExportsResolve (internal/modules/esm/resolve.js:513:3)
at resolveExports (internal/modules/cjs/loader.js:432:36)
at Function.Module._findPath (internal/modules/cjs/loader.js:472:31)
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/path/to/jan-molak/cucumber-js-1646/index.js:1:32)
حسنًا ، تم إصدار 7.2.1 مع عودة ، وسأبحث مرة أخرى في شيء ESM وأرى ما إذا كانت هناك طريقة يمكننا من خلالها تجنب هذه المشكلة. شكرا لرفع @ jan-molak
شكرًا على الرد السريع جدًا ،davidjgoss!
التعليق الأكثر فائدة
حسنًا ، تم إصدار 7.2.1 مع عودة ، وسأبحث مرة أخرى في شيء ESM وأرى ما إذا كانت هناك طريقة يمكننا من خلالها تجنب هذه المشكلة. شكرا لرفع @ jan-molak