рдЬрдм рдореИрдВ рдореВрд▓ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде Cucumber.js рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ require()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
Cucumber.js рд╕рдВрд╕реНрдХрд░рдг: 6.0.5
рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг: 13.8.0
npm init
рдФрд░ npm i cucumber
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореВрд▓ NPM рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ"type": "module"
рдХреЛ package.json
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, features/mjs.feature
:
Feature: Native JS Modules
Scenario: Load a native JS module step definition
Given I have 42 cucumbers in my belly
рдПрдХ рдореВрд▓ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, features/step_definitions.js
:
import { Given } from "cucumber";
Given("I have {int} cucumbers in my belly", function (cucumberCount) {
console.log("Step parsed.");
});
рдЦреАрд░рд╛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕:
$ ./node_modules/.bin/cucumber-js
рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЪрд░рдг рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /some/path/cucumbertest/features/step_definitions.js
require() of ES modules is not supported.
require() of /some/path/cucumbertest/features/step_definitions.js from /some/path/cucumbertest/node_modules/cucumber/lib/cli/index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename step_definitions.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /some/path/cucumbertest/package.json.
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:13)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Module.require (internal/modules/cjs/loader.js:1040:19)
at require (internal/modules/cjs/helpers.js:72:18)
at /some/path/cucumbertest/node_modules/cucumber/lib/cli/index.js:119:42
at Array.forEach (<anonymous>)
at Cli.getSupportCodeLibrary (/some/path/cucumbertest/node_modules/cucumber/lib/cli/index.js:119:22)
at Cli.run (/some/path/cucumbertest/node_modules/cucumber/lib/cli/index.js:141:37)
at async Object.run [as default] (/some/path/cucumbertest/node_modules/cucumber/lib/cli/run.js:30:14)
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ Cucumber.js рдЯреАрдо рдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рдФрд░ рдореЗрд░реА рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрдкрддреНрддрд┐ рд░рд╣реА рд╣реИред рдореЗрд░реА рдЯреАрдо рдиреЗ рджреЗрд╢реА рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреБрдЫ рд╕рд╛рдЭрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрдм рддрдХ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдорд╛рди рд░рд╣рд╛ рдерд╛ (рд╕рдмрд╕реЗ рд╡рд░реНрддрдорд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ import
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рди рдХрдХрдбрд╝реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рд╣рдо рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕рд╛рдЭрд╛ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдФрд░ рдПрдХреАрдХреГрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдХреЙрдордирдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЗрд╡рд▓ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд╕рдорд░реНрдерди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдирд┐рдЪреНрдЫреБрдХ рд╣реВрдВред
рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдХрд╛рдо рдкрд░ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЙрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ...
.mjs
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреЗрдирд╛, рдкреНрд░рддрд┐ Node.js рд╕рдореНрдореЗрд▓рди (рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрдХрдбрд╝реА рдХреЗ рдСрдЯреЛ-рд▓реЛрдбрд┐рдВрдЧ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ --require
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ import()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдпрд╛рдд рд╡рд╛рджрд╛ рд╕реАрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдХрдбрд╝реА рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рд╡рд╛рджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪрд░рдг рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрд╢реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрднреА рддрдХ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдерд╛)редрдЕрдЧрд░ рдпрд╣ рдореЗрд░реА рдХреНрд╖рдорддрд╛ рдХреЗ рднреАрддрд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ Cucumber.js рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ рдИрдПрд╕рдПрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдХрдХрдбрд╝реА-рдЬреЗрдПрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдореБрджреНрджреЗ рдкрд╣рд▓реЗ рд╣реА рдЦреБрд▓ рдЪреБрдХреЗ рдереЗред
рд╣рдо рдПрдХ рд╕реАрдПрд▓рдЖрдИ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕реЗ рдХрдм рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП) рдЬреЛ рдХрдХрдбрд╝реА-рдЬреЗрдПрд╕ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп import
рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓реМрдЯрд╛рдП рдЧрдП рд╡рд╛рджреЗ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕ рд╡рд╛рджреЗ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛:
тЛК> ~/p/test ./node_modules/.bin/cucumber-js 21:05:22
(node:7422) ExperimentalWarning: The ESM module loader is experimental.
file:///test/features/steps.js:1
import { Given } from "cucumber";
^^^^^
SyntaxError: The requested module 'cucumber' does not provide an export named 'Given'
at ModuleJob._instantiate (internal/modules/esm/module_job.js:92:21)
at async ModuleJob.run (internal/modules/esm/module_job.js:107:20)
at async Loader.import (internal/modules/esm/loader.js:176:24)
at async Promise.all (index 0)
at async Cli.getSupportCodeLibrary (/test/node_modules/cucumber/lib/cli/index.js:119:5)
at async Cli.run (/test/node_modules/cucumber/lib/cli/index.js:141:32)
at async Object.run [as default] (/test/node_modules/cucumber/lib/cli/run.js:30:14)
рдореИрдВрдиреЗ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдЙрджрд╛рд╣рд░рдг (рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд) рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдпрд╣ рд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ Cucumber.js рдПрдХ CommonJS рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ, рдореИрдВ рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдпрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рджрд┐рдП рдЧрдП/рдХрдм/рдлрд┐рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛:
import cucumber from "cucumber";
cucumber.Given(...);
рд▓рдВрдмреЗ рд╕рдордп рддрдХ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХрдХрдбрд╝реА рдХреЗ рдЖрдпрд╛рдд рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реЛрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛
рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп рдХрдХрдбрд╝реА рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд▓рдЖрдИ рд╡рд┐рдХрд▓реНрдк рдореБрдЭреЗ рдареАрдХ рд▓рдЧреЗрдЧрд╛ред рдпрд╣ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХрдХрдбрд╝реА .cjs рдФрд░ .mjs рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рд╕рдорд░реНрдерди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧреА, рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд╢рдГ CommonJS рдФрд░ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдЧреАред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдмрд╕ рдпрд╣ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреА рднреА рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА; рдмрд╕ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред
рдореИрдВ рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдпрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рджрд┐рдП рдЧрдП/рдХрдм/рдлрд┐рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛:
"рдХрдХрдбрд╝реА" рд╕реЗ рдХрдХрдбрд╝реА рдЖрдпрд╛рдд рдХрд░реЗрдВ;
рдХрдХрдбрд╝реАред рджрд┐рдпрд╛ (...);
рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╣реА рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ package.json рдореЗрдВ "рдЯрд╛рдЗрдк": "рдореЙрдбреНрдпреВрд▓" рд╣реИ рдФрд░ рдореЗрд░реА рдмрд╛рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
import cucumber from '@cucumber/cucumber';
// OR
import { When } from '@cucumber/cucumber';
рдореБрдЭреЗ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред
рдЕрдЧрд░ рдореИрдВ . рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реВрдБ
const cucumber = require('@cucumber/cucumber');
рддрдм рдореБрдЭреЗ рдпрд╣ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ:
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп .cjs рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП /some/path/cucumbertest/features/step_definitions.js рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ, рдЖрдпрд╛рдд() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдмрджрд▓реЗрдВ, рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ/рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рд╕реЗ "рдЯрд╛рдЗрдк": "рдореЙрдбреНрдпреВрд▓" рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
рдЕрдЧрд░ рдореИрдВ step_definitions.js
рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ _eother_ step_definitions.cjs
рдпрд╛ step_definitions.mjs
рдХрд░ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдХрдХрдбрд╝реА рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдореЗрд░реЗ рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ:
UUUUUU
Failures:
1) Scenario: Empty Payload # spec\cucumber\features\users\create\main.feature:4
? When the client creates a POST request to /users
Undefined. Implement with the following snippet:
When('the client creates a POST request to \/users', function () {
// Write code here that turns the phrase above into concrete actions
return 'pending';
});
... etc
рдЕрдЧрд░ рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╡рд╣реА рд╕рдВрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ "рдЯрд╛рдЗрдк": "рдореЙрдбреНрдпреВрд▓" рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХрдбрд╝реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд╡рд╣ рд╣реИ "рдЯрд╛рдЗрдк": "рдореЙрдбреНрдпреВрд▓" рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЕрд▓рдЧ specpackage.json рдмрдирд╛рдирд╛ рдФрд░ рдХрдХрдбрд╝реА рдХреЛ spec/node_modules
рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдЕрднреА рддрдХ рдпрд╣ рдЪрд╛рд▓реВ рд▓рдЧрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП: рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдХрдХрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдЕрдм рддрдХ рдкрд╕рдВрдж рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдкреНрд░рдЧрддрд┐ рдореЗрдВ рд╕реЗрдВрдз рд▓рдЧрд╛ рджреА рд╣реИред рджреЛрдкрд╣рд░ рдХреЛ рдХрдХрдбрд╝реА рд╕реАрдЦрдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореИрдВрдиреЗ рдЗрд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдпрд╛рдд рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдЬреЛ ES6 рдЖрдпрд╛рдд рдФрд░ CJS рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдореЗрд░реА рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╣реИред
рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди:
рдпрджрд┐ рдЖрдк рджреВрд╕рд░реА рдбрд┐рд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ CJS рдФрд░ ES6 рдмрд┐рд▓реНрдб рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
рдЬрд┐рд▓рд╛/рдЦреАрд░рд╛.js
рдЬрд┐рд▓рд╛/рдЦреАрд░рд╛.рдореЙрдбреНрдпреВрд▓.рдЬреЗрдПрд╕
рдлрд┐рд░ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ package.json рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
"рдореЙрдбреНрдпреВрд▓": "dist/cucumber.module.js"
рдпрд╣ ES6 рдЖрдпрд╛рддреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рднреА рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдо рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
https://nodejs.org/api/esm.html#esm_import_expressions
рд╣рд░ рдЬрдЧрд╣...
рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХрдХрдбрд╝реА рдХрд╛ рдЭрдВрдбрд╛ рд╣рдореЗрдВ ES рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдЗрд╕рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рдПрдХ: рдЬрдм рдЖрдк рдХрдХрдбрд╝реА рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдИрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк:
.js
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ "type":"module"
.mjs
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдзрдиреНрдпрд╡рд╛рдж!
рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреА рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП .mjs рдФрд░ .cjs рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкрд░рдВрдкрд░рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдРрд╕рд╛ рдХрд░рдирд╛ рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ "рдЯрд╛рдЗрдк": "рдореЙрдбреНрдпреВрд▓" рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдмрдбрд╝реА рдЕрд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рддреЛ рдЗрдиреНрд╣реЗрдВ .js рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВред
рдореИрдВ .js
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ "type":"module"
рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рдЖрджрд░реНрд╢ рдмрди рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @adamlacoste @looeee
@davidjgoss рдХреНрдпрд╛ #1589 рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛрдирд╛ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ? рдпрд╛ рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рд┐рдП?
рдХреБрд╣рдиреА рд╕реЗ рд╣рд▓рдХрд╛ рдзрдХреНрдХрд╛ @ рдСрд░реЗрд▓рд┐рдпрди-рд░реАрд╡реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
@cucumber/cucumber
рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 7.2.0 рдЕрдм npm рдкрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ ESM рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдбреЙрдХреНрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
https://github.com/cucumber/cucumber-js/blob/master/docs/cli.md#es-modules-experimental-nodejs-12
рдпрджрд┐ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЗрд╕реЗ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рд╕реБрдкрд░ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рдЦрд╛ рд╣реИ:
https://github.com/davidjgoss/cucumber-esm-example
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИ, рдмрд╕ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рдВрджрд░реНрдн https://github.com/cucumber/cucumber-js/issues/1646
рддреЛ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдиреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рдврд╛рдВрдЪреЗ рдФрд░ рд╕реНрд╡рд░реВрдкрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЬреЛ require
рдХреБрдЫ рд╕рд╛рдорд╛рди рд╕реАрдзреЗ (рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд╡рд┐рдкрд░реАрдд)ред рдореИрдВрдиреЗ 7.2.1 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдирд╡рд░реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 7.1.0 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рдХрд╛рд░рдг рдХреЛ рдЦреЛрджреВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдИрдПрд╕рдПрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рдЗрд╕рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдмреАрдЪ, рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрднреА рднреА 7.2.0 рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред
рдореИрдВ --esm
рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде v7.2.0
рдПрдХ рд╢реЙрдЯ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЯреЗрд╕реНрдЯрдбрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рдИрдПрд╕рдПрдо рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
td.replaceEsm
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ --loader=testdouble
ред рдЬрдм рдореИрдВ рд▓реЛрдбрд░ рдХреЛ рд╕реАрдзреЗ рдХрдХрдбрд╝реА рдХреНрд▓реА рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
> cucumber-js test/integration --esm --loader=testdouble
error: unknown option '--loader=testdouble'
рдЪреВрдВрдХрд┐ рд╡рд╣ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ NODE_OPTIONS
:
> NODE_OPTIONS='--loader=testdouble' cucumber-js test/integration --esm
(node:62231) ExperimentalWarning: --experimental-loader is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension "" for /path/to/project/node_modules/@cucumber/cucumber/bin/cucumber-js
at defaultGetFormat (internal/modules/esm/get_format.js:71:15)
at getFormat (file:///path/to/project/node_modules/quibble/lib/quibble.mjs:65:12)
at Loader.getFormat (internal/modules/esm/loader.js:104:42)
at Loader.getModuleJob (internal/modules/esm/loader.js:242:31)
at async Loader.import (internal/modules/esm/loader.js:176:17)
at async Object.loadESM (internal/process/esm_loader.js:68:5) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рдиреЛрдб v14.17.0
рд╡рд┐рд░реБрджреНрдз рдерд╛
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ NODE_OPTIONS
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ --loader
рд╡рд┐рдХрд▓реНрдк рд╕реАрдзреЗ рдХреНрд▓реА рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдИрдПрд╕рдПрдо рд╕рдорд░реНрдерди рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ :)
рдХреНрдпрд╛ рд▓реЛрдбрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдХрд┐ рдЖрдк v7.2.0
рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ
.js
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░"type":"module"
рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рдЖрджрд░реНрд╢ рдмрди рдЬрд╛рдПрдЧрд╛ред