运行Cucumber场景时出现MODULE_NOT_FOUND错误求助
解决方案:Cucumber MODULE_NOT_FOUND 错误修复
问题根源拆解
- 路径拼写错误:npm脚本中写成了
node-modules,实际正确路径是node_modules,直接导致找不到Cucumber执行文件 - 依赖版本冲突:同时安装了新版
@cucumber/cucumber@9.x和旧版cucumber@6.x,两个包的文件结构和执行逻辑相互干扰 - ES模块兼容性问题:package.json设置了
"type": "module",但ts-node默认以CommonJS模式运行,和Cucumber的执行脚本不兼容
分步修复操作
1. 清理冲突依赖
卸载旧版cucumber包,仅保留新版官方包:
npm uninstall cucumber
2. 修正npm脚本
修改package.json中的scripts字段,修正路径拼写,同时配置ts-node以ES模块模式运行:
{ "type": "module", "files": [ "src", "cucumber.js" ], "scripts": { "cucumber": "npx ts-node --esm node_modules/@cucumber/cucumber/bin/cucumber.js -p default" }, "dependencies": { "@cucumber/cucumber": "^9.0.1", "chromedriver": "^115.0.1", "ts-node": "^10.9.1", "typescript": "5.1.6" } }
说明:
--esm参数让ts-node匹配项目的ES模块配置,避免模块加载模式冲突
3. 重新安装依赖
删除旧依赖文件和锁文件,确保依赖环境干净:
rm -rf node_modules package-lock.json npm install
4. 重新运行测试命令
npm run cucumber -- features --name say-hello
额外验证项
- 确认项目根目录下存在
cucumber.js配置文件(package.json中已声明该文件,必须存在) - 若仍有问题,检查tsconfig.json是否开启ES模块支持:
{ "compilerOptions": { "module": "ESNext", "moduleResolution": "NodeNext" } }
内容的提问来源于stack exchange,提问作者Learner Dotcom
相关产品推荐
相关产品推荐

