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

使用pkg工具打包含canvas的Node.js应用时出现ERR_DLOPEN_FAILED错误

解决pkg打包含canvas的Node.js应用时出现ERR_DLOPEN_FAILED错误

问题背景

使用pkg工具打包包含canvas包的Node.js应用生成可执行文件时,触发以下错误:

Error: error: 126C: code: 'ERR_DLOPEN_FAILED' at process.dlopen (pkg/prelude/bootstrap.js:2251:28)

不含canvas包时生成的exe可正常运行,仅在引入canvas后出现该问题。

复现步骤

  • 按常规流程创建Node.js应用
  • 安装canvas包并在入口文件(index.js)中引入
  • 执行node index.js可正常运行;执行pkg index.js生成exe后,运行.\index-win.exe触发上述错误

环境信息

  • Node.js版本:v16.17.0、18.5.0、18.17.0
  • 操作系统:Windows 10
  • pkg版本:v5.8.1

解决方案

1. 配置pkg打包时包含canvas的二进制文件

canvas依赖原生二进制库,pkg默认不会自动打包这些文件,需要在package.json中添加pkg配置,指定要包含的资源:

"pkg": {
  "assets": [
    "./node_modules/canvas/build/Release/*"
  ]
}

2. 补充Windows系统依赖文件

canvas在Windows下依赖libpng16-16.dll、zlib1.dll等动态链接库,这些文件通常位于./node_modules/canvas/build/Release/目录下。可以将这些dll文件复制到项目根目录,同时在pkg配置中添加:

"pkg": {
  "assets": [
    "./node_modules/canvas/build/Release/*",
    "./*.dll"
  ]
}

3. 匹配兼容的版本组合

部分版本的canvas和pkg存在兼容性问题,建议尝试canvas@2.11.2 + pkg@5.8.1的组合,或升级至两者的最新稳定版。

4. 明确指定打包平台

打包时指定Windows平台,避免跨平台打包导致的异常:

pkg -t node18-win-x64 index.js

验证步骤

修改配置后重新执行pkg index.js,运行生成的可执行文件,检查是否正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:35:16