首页 > 解决方案 > 如何避免 node-canvas 的 loadImage 的多字节文件路径错误?

问题描述

node-canvas (2.7.0) 存在无法从包含多字节字符的路径加载图像的错误。

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

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

这种情况会导致“找不到文件”错误。

如何避免这种情况?

标签: node.jscanvasnode-canvas

解决方案


我们应该等待官方错误修复,但以下工作可以解决:

const { Image } = require('canvas');
const fs = require('fs');

const image = await new Promise((res, rej) => {
  fs.readFile('/Users/ユーザ名/Documents/test.png', (err, buf) => {
    if (err) rej(err);
    const img = new Image();
    img.onload = () => { res(img) };
    img.onerror = (err) => { rej(err) };
    img.src = buf;
  });
});

推荐阅读