使用createWriteStream创建文件后使用readFileSync显示空缓冲区

时间:2018-04-04 17:16:40

标签: node.js fs

我正在使用gif-encoder npm module创建一个gif,然后使用imgur-uploader module将其上传到imgur。以下是我的相关代码,其中pics是一个文件名数组:

var gif = new GifEncoder(imageSize, imageSize);
var file = fs.createWriteStream('testing.gif');

gif.pipe(file);
gif.setRepeat(0);
gif.setQuality(20);
gif.setDelay(100);
gif.writeHeader();

var addToGif = function(images, counter = 0) {
    getPixels(images[counter], function(err, pixels) {
        gif.addFrame(pixels.data);
        gif.read();
        if (counter === images.length - 1) {
            gif.finish();
        } else {
            addToGif(images, ++counter);
        }
    })
}
addToGif(pics);

var sleep = require('sleep');
sleep.sleep(3) // I put this here because I thought I'd have to wait, but it doesn't work
console.log(fs.readFileSync('testing.gif'));
return imgurUploader(fs.readFileSync('testing.gif'), { title: 'Hello!' })
.then(data => {
    return data.link;
});

这个 在我的文件系统中正确创建了gif,但console.log(fs.readFileSync('testing.gif')行只显示了一个空<Buffer >!这意味着imgurUploader函数返回400错误,因为它发送(它认为是)一个空文件。

如果我将imgurUploader文件参数替换为我的文件夹中的一些预先存在的图像,它可以正常工作。

为什么readFileSync在文件确实存在时返回空缓冲区?

0 个答案:

没有答案