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

如何规避node-canvas的loadImage接口多字节文件路径加载bug

node-canvas 2.7.0多字节路径加载图片失败规避方案

node-canvas 2.7.0内部对文件路径的编码处理存在缺陷,遇到包含中文、日文等非ASCII多字节字符的路径时,会出现路径解析错误,触发File not found报错,对应触发代码如下:

const { loadImage } = require('canvas');

const image = await loadImage('/Users/ユーザ名/Documents/test.png');

可用规避方案

  • 方案1:升级node-canvas到2.8.0及以上版本
    该路径编码bug在2.8.0版本已被官方修复,直接升级依赖即可解决,升级命令:
    npm install canvas@^2.8.0
    
  • 方案2:无法升级版本时,先读取文件为Buffer再传入loadImage
    该方式绕开了node-canvas内部的路径解析逻辑,兼容性最佳,Node.js原生fs模块对多字节路径的支持正常,示例代码如下:
    const { loadImage } = require('canvas');
    const fs = require('fs/promises');
    
    // 先读取文件为Buffer
    const imageBuffer = await fs.readFile('/Users/ユーザ名/Documents/test.png');
    // 传入Buffer加载图片
    const image = await loadImage(imageBuffer);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:09