ねえ@davidjgossと@charlierudolph!
7.2.0
(#1589)で導入されたESMのサポートは、サブモジュールのインポートを許可しなくなったため、多くの外部レポーターを壊しているようです。
これは、サブモジュールのインポートを試みるプロジェクトでエラーとして現れます。
たとえば、次のいずれかを呼び出します。
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
あるいは、上記の提案があまりにも多くの作業を必要とする場合、それらの変更を元に戻すことは可能でしょうか?
ありがとう、
1月
@ jan-molak
7.2.0(#1589)で導入されたESMのサポートは、サブモジュールのインポートを許可しなくなったため、多くの外部レポーターを壊しているようです。
簡単に説明すると、これは--esm
を使用している場合にのみ発生します。
今日もかなりの問題に気づきました。メインのエントリポイントでエクスポートするものを拡張することの影響を見ていきます。 ほとんどは合理的に見えますが、APIコントラクトに新しいものを効果的に追加しているため、後で元に戻すと重大な変更になるため、注意が必要です。
こんにちは@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を育ててくれてありがとう