I have node 18.17.1 and npm 9.6.7 on my machine.
I am trying to run the cucumber scenario and getting a module not found error when I try to execute the cucumber scenario. I tried npm install
multiple times but was not able to get rid of this error.
terminal % npm run cucumber -- features --name say-hello
cucumber
ts-node node-modules/@cucumber/cucumber/bin/cucumber.js -p default features --name say-hello
node:internal/modules/cjs/loader:1080
throw err;
^
Error: Cannot find module './cucumber.js'
Require stack:
- /Users/project/node-modules/@cucumber/cucumber/bin/imaginaryUncacheableRequireResolveScript
at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
at Function.resolve (node:internal/modules/cjs/helpers:127:19)
at requireResolveNonCached (/Users/project/node_modules/ts-node/dist/bin.js:549:16)
at getProjectSearchDir (/Users/project/node_modules/ts-node/dist/bin.js:519:40)
at phase3 (/Users/project/node_modules/ts-node/dist/bin.js:267:27)
at bootstrap (/Users/project/node_modules/ts-node/dist/bin.js:47:30)
at main (/Users/project/node_modules/ts-node/dist/bin.js:33:12)
at Object.<anonymous> (/Users/project/node_modules/ts-node/dist/bin.js:579:5)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/project/node-modules/@cucumber/cucumber/bin/imaginaryUncacheableRequireResolveScript'
]
}
Below is package.json
{
"type": "module",
"files": [
"src",
"cucumber.js"
],
"scripts": {
"cucumber": "ts-node node-modules/@cucumber/cucumber/bin/cucumber.js -p default"
},
"dependencies": {
"@cucumber/cucumber": "^9.0.1",
"chromedriver": "^115.0.1",
"cucumber": "^6.0.7",
"ts-node": "^10.9.1",
"typescript": "5.1.6"
}
}
I tried different cucumber versions and npm install multiple times and also tried clean cache.
I was expecting this error is not thrown and execution is successful but getting this error every time.
This was resolved by adding below loader option to cucumber command.
--loader ts-node/esm
Example: "scripts": { "cucumber": "ts-node --loader ts-node/esm node-modules/@cucumber/cucumber/bin/cucumber.js -p default" }