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

如何将package.json的browser字段转为ESM的exports字段以屏蔽Node.js模块?

解决方案

可以通过exports字段的条件导出实现浏览器环境下屏蔽指定模块的效果,无需回退到CJS规范。修改后的package.json配置如下:

{
  "name": "mypackage",
  "version": "1.0.0",
  "type": "module",
  "exports": {
    // 包主入口的环境区分
    ".": {
      "node": "./dist/localFile.js",
      "default": "./esm/localFile.js"
    },
    // 屏蔽dist下的文件在浏览器环境的加载
    "./dist/localFile.js": {
      "browser": false,
      "default": "./dist/localFile.js"
    },
    // 屏蔽esm下的文件在浏览器环境的加载
    "./esm/localFile.js": {
      "browser": false,
      "default": "./esm/localFile.js"
    }
  }
}

配置说明

  • 移除了原有的main和module字段,exports字段会覆盖这两个字段的解析优先级,是ESM规范下更标准的入口定义方式。
  • 主入口(.)通过node条件指定Node.js环境使用原main路径,default条件兜底适配其他环境(包括浏览器)使用原module路径。
  • 针对需要屏蔽的两个文件路径,通过browser条件指定在浏览器环境下导出false,等同于原browser字段的效果——浏览器打包工具(如Webpack、Rollup)会忽略该模块的加载;default条件保证Node.js等其他环境正常加载原文件。

内容的提问来源于stack exchange,提问作者Colin D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:33:32