You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决运行Cucumber.js时出现Package subpath './package.json' exports未定义错误

问题现象

使用Protractor运行cucumber.js文件时触发报错,进程最终以错误码100退出,完整报错信息如下:

E/launcher - 错误: Error [ERR_PACKAGE_PATH_NOT_EXPORTED] [ERR_PACKAGE_PATH_NOT_EXPORTED]: 包子路径 './package.json' 没有在 E:\Tutorial\CucumberProject\node_modules\@cucumber\cucumber\package.json 的 "exports" 字段中定义
at new NodeError (internal/errors.js:322:7)
at throwExportsNotFound (internal/modules/esm/resolve.js:322:9)
at packageExportsResolve (internal/modules/esm/resolve.js:545:3)
at resolveExports (internal/modules/cjs/loader.js:450:36)
at Function.Module._findPath (internal/modules/cjs/loader.js:490:31)
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:888:27)
at Function.Module._load (internal/modules/cjs/loader.js:746:27)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:93:18)
at ModuleLoader.require (E:\Tutorial\CucumberProject\node_modules\@serenity-js\core\src\io\ModuleLoader.ts:68:20)
[16:12:08] E/launcher - 进程退出,错误码 100
问题原因

该报错为版本兼容性问题导致:@cucumber/cucumber v8及更高版本在package.json中新增了exports字段,限制了可被外部引用的路径,默认不允许其他模块直接读取自身的package.json文件。而项目中依赖的@serenity-js/core的ModuleLoader模块需要通过require方式读取@cucumber/cucumber的package.json文件获取版本等信息,触发了Node.js的导出规则限制,抛出错误。

解决方案
  • 方案1:降级@cucumber/cucumber到v7.x版本,执行命令:
    npm install @cucumber/cucumber@7.x --save-dev
    v7版本未添加exports导出限制,可直接兼容现有serenity-js的读取逻辑。
  • 方案2:升级所有@serenity-js相关依赖到最新适配版本,新版serenity-js已经适配了高版本cucumber的导出规则,不再需要直接读取其package.json文件,可兼容v8及以上版本的cucumber。
  • 方案3:临时应急兼容(不推荐长期使用),手动修改node_modules/@cucumber/cucumber/package.json文件,在exports配置项中新增一行允许读取package.json的规则:
    "./package.json": "./package.json"

内容的提问来源于stack exchange,提问作者Afreen Maldar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:06:05