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

依赖包package.json含main:false导致Parcel构建失败求助

解决Node 20 LTS下Parcel构建因dunder-proto依赖main字段类型错误的问题

方案1:使用npm/yarn依赖覆盖强制修正dunder-proto的package.json

因为dunder-proto的main字段是布尔值false,不符合Node 20对package.json字段的严格校验,你可以通过依赖覆盖机制强制修正该字段:

对于npm(8.x+):

在项目根目录的package.json中添加:

"overrides": {
  "dunder-proto": {
    "main": "index.js"
  }
}

在项目根目录创建一个空的index.js文件,之后执行npm install,npm会自动覆盖该依赖的package.json中的main字段。

对于yarn:

在package.json中添加:

"resolutions": {
  "dunder-proto/main": "index.js"
}

同样创建空的index.js文件,执行yarn install即可生效。

方案2:用postinstall脚本自动修复dunder-proto的package.json

在package.json的scripts中添加postinstall脚本,每次安装依赖后自动修正字段:

"scripts": {
  "postinstall": "sed -i 's/\"main\": false/\"main\": \"index.js\"/' node_modules/dunder-proto/package.json || true"
}

脚本会将dunder-proto的main字段从布尔值false改为字符串"index.js",|| true用于避免依赖不存在时报错中断流程。执行npm install后脚本会自动运行。

方案3:升级上游依赖避免引入有问题的dunder-proto

dunder-proto由aws-sdk和eslint-plugin-react间接引入,你可以尝试:

  • 升级aws-sdk到v3版本:AWS SDK v3采用模块化设计,依赖结构更简洁,大概率不会引入该问题依赖。
  • 升级eslint-plugin-react到最新稳定版:检查新版本是否已移除对dunder-proto的依赖,或替换为合规的替代包。

注意:升级前需做好功能测试,确保项目不受影响。

方案4:自定义Parcel resolver跳过该依赖的校验

在项目根目录创建.parcelrc配置文件:

{
  "resolvers": ["@parcel/resolver-default", "./custom-resolver.js"]
}

然后创建custom-resolver.js,实现自定义解析规则:

module.exports = {
  async resolve({ specifier, dependencyType, resolve }) {
    if (specifier === 'dunder-proto') {
      return {
        filePath: require.resolve('./empty.js'),
        isExplicit: true
      };
    }
    return resolve(specifier, dependencyType);
  }
};

同时创建empty.js空文件,Parcel会在解析dunder-proto时直接使用这个空模块,跳过原依赖的校验。

内容的提问来源于stack exchange,提问作者Ryan Shillington

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:55:05