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

Node 20.9.0搭配Yarn 3.2.4用protobufjs报错,求解决方案

问题分析与解决方案

这是Node 20.x + Yarn 3.x早期版本组合下的已知兼容性问题,根源在于:

  • Node 18及以上版本的ES模块(ESM)规范要求导入JSON文件时必须添加assert { type: "json" }断言
  • protobufjs@7.2.5的postinstall脚本中存在未添加该断言的JSON导入逻辑
  • Yarn 3.2.4的PnP加载器在处理这类ESM导入时会触发该错误

解决方案

方案1:升级Yarn版本(推荐)

Yarn 3.6及以上版本已修复了PnP与ESM JSON导入的兼容问题,执行以下步骤:

# 升级Yarn到3.6.4(稳定版)
yarn set version 3.6.4
# 重新安装protobufjs
yarn add protobufjs

方案2:跳过postinstall脚本(临时应急)

如果暂时无法升级Yarn,可以安装时跳过包的postinstall脚本:

yarn add protobufjs --ignore-scripts

注意:此方法会跳过protobufjs的初始化构建步骤,若后续需要使用其代码生成工具(如pbjs),可能需要手动执行相关命令。

方案3:切换到CommonJS模块模式

在项目根目录的package.json中添加以下配置,强制使用CommonJS模块系统,避免ESM的JSON导入断言限制:

{
  "type": "commonjs"
}

注意:此方案会改变整个项目的模块解析规则,若项目依赖ESM模块可能引发其他问题,需谨慎使用。

内容的提问来源于stack exchange,提问作者Eric G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:22:45