Search code examples
node.jscucumber

MODULE_NOT_FOUND error while running cucumber scenario


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.


Solution

  • 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" }