如何避免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;
});
});
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;
});
});