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

使用pkg打包pdfkit项目后执行exe报错:不支持ascii编码

解决pkg打包pdfkit项目后运行出现ERR_ENCODING_NOT_SUPPORTED错误

这个错误通常是pkg打包时未正确包含静态资源(字体、图片),或是依赖库在打包环境下尝试使用不被支持的ascii编码导致的,以下是具体解决办法:

1. 确保静态资源被正确打包

pkg默认不会自动打包项目中的字体、图片等静态文件,需要手动配置:

  • 在项目的package.json中添加pkg字段,指定需要打包的资源:
{
  "pkg": {
    "assets": [
      "path/to/font.ttf",
      "path/to/image.png"
    ]
  }
}

或者在打包命令中通过--assets参数指定:

pkg --target node16-win-x64 --assets "path/to/*" -o app.exe

2. 改用二进制流处理,避免隐式编码调用

修改代码,确保文件读写使用二进制模式,绕过默认的ascii编码依赖:

  • 调整PDF写入流的编码设置:
doc.pipe(fs.createWriteStream('output.pdf', { encoding: 'binary' }));
  • 直接读取字体文件为Buffer后传入pdfkit:
const fontBuffer = fs.readFileSync('path/to/font.ttf');
doc.font(fontBuffer)
   .fontSize(25)
   .text('This is a custom font!', 100, 100);

3. 排查依赖兼容性

尝试调整依赖版本适配:

  • 升级pdfkit到最新稳定版,注意与Node.js 16的版本兼容
  • 更换pkg版本,比如使用5.7.x版本测试是否与当前Node.js版本更适配

4. 定位具体报错模块

添加异常捕获代码,打印详细堆栈信息,确定触发编码错误的具体模块:

process.on('uncaughtException', (err) => {
  console.error('错误详情:', err);
  console.error('堆栈信息:', err.stack);
});

重新打包运行后,根据堆栈信息针对性修复对应模块的编码调用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:46:11