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

使用Esbuild打包Node项目时遇模块解析错误求助

解决Esbuild打包Node项目时无法解析node:child_process/node:path的问题

问题出在Esbuild默认不会自动识别带node:前缀的Node核心模块,这类模块是Node运行环境自带的,根本不需要打包进你的bundle里。直接把它们标记为external就能解决。

方式1:修改命令行参数

在你的Esbuild命令里添加--external:node:*,一次性排除所有node:前缀的核心模块(比单独加每个模块更省心)。修改后的完整命令:

esbuild src/index.ts --platform=node --outfile=dist/index.js --bundle --minify --define:process.env.NODE_ENV=\"production\" --external:node:*

如果只想单独排除报错的两个模块,也可以写成:

esbuild src/index.ts --platform=node --outfile=dist/index.js --bundle --minify --define:process.env.NODE_ENV=\"production\" --external:node:child_process --external:node:path

方式2:用配置文件管理(更适合复杂项目)

如果项目后续需要更多Esbuild配置,建议写个配置文件esbuild.config.js:

require('esbuild').build({
  entryPoints: ['src/index.ts'],
  platform: 'node',
  outfile: 'dist/index.js',
  bundle: true,
  minify: true,
  define: { 'process.env.NODE_ENV': '"production"' },
  external: ['node:*']
}).catch(() => process.exit(1))

然后把prepublishOnly脚本改成调用这个配置文件:

"prepublishOnly": "node esbuild.config.js"

标记为external后,Esbuild会保留代码里require('node:xxx')的调用,不会再尝试解析打包这些模块,运行时Node会自动找到对应的核心模块。

内容的提问来源于stack exchange,提问作者Daniel Poreda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:52:44