如何避免node-canvas的loadImage的多字节文件路径bug?

How to avoid multi-byte file path bug of node-canvas's loadImage?

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

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

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

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

如何避免这种情况?

我们应该等待官方错误修复,但以下是解决方法:

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;
  });
});