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

Yarn 3搭配Node 17启用Plug'n'Play后无法自动解析.js扩展名问题

你遇到的扩展名解析问题是两个规则共同作用的结果:

  1. Node 原生 ESM 规范默认要求导入路径必须补全文件扩展名,不支持 CommonJS 模式下的自动补全逻辑
  2. Yarn PnP 的默认 ESM 加载器会严格遵循 Node ESM 规范,不会自动追加扩展名

你之前的判断正确,yarn node 命令确实会自动加载 .pnp.cjs 接管模块解析逻辑。

可用解决方案

  • 方案1:启用 Node 实验性 ESM 解析规则
    直接修改启动命令,添加 Node 内置参数即可实现类似 CommonJS 的自动扩展名解析,无需修改任何项目配置:
yarn node --experimental-specifier-resolution=node server.js

该方案对 Node 17.0.1 版本完全兼容。

  • 方案2:配置 Yarn PnP 自动识别扩展名
    如果你不想使用实验性参数,可以在项目根目录的 .yarnrc.yml 文件中添加以下配置:
pnpEnableEsmLoader: true
pnpExtensions:
  - .js
  - .jsx
  # 如有TypeScript需求可追加对应扩展名
  # - .ts
  # - .tsx

配置完成后执行 yarn install 重新生成 PnP 文件,再用原命令 yarn node server.js 启动即可。

  • 方案3:简化启动命令
    如果需要固定启动逻辑,可以在 package.json 中添加脚本配置:
{
  "scripts": {
    "start": "yarn node --experimental-specifier-resolution=node server.js"
  }
}

后续只需执行 yarn start 即可完成启动。

内容的提问来源于stack exchange,提问作者Michael Johansen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:03