Node.js NodeJS writeStream空文件

Node.js NodeJS writeStream空文件,node.js,filesystems,png,Node.js,Filesystems,Png,我正在尝试使用nodeJS来保存存储在base64字符串中的已处理图像 var buff = new Buffer(base64data,'base64'); console.log(base64data); var stream = fs.createWriteStream('/path/to/thefile.png'); stream.write(buff) stream.end() 但是,生成的文件是空的 当我获取console.log(base64data)的输出时并在本地解码,它会

我正在尝试使用nodeJS来保存存储在base64字符串中的已处理图像

var buff = new Buffer(base64data,'base64');
console.log(base64data);

var stream = fs.createWriteStream('/path/to/thefile.png');
stream.write(buff)
stream.end()
但是,生成的文件是空的

当我获取
console.log(base64data)的输出时并在本地解码,它会生成一个有效的png二进制文件,那么为什么文件是空的呢

该文件是一个3600x4800 px png文件(即,它很大),这可能是一个因素吗

此外,我还尝试了
writeFile
,但没有成功

是的,
fs
require('fs')

感谢您的stream.end(),因为没有写入任何内容。它是异步函数

var buff = new Buffer(base64data,'base64');
console.log(base64data);

var stream = fs.createWriteStream('/path/to/thefile.png');
stream.write(buff);
stream.on("end", function() {
  stream.end();
});
更好:

var buff = new Buffer(base64data,'base64');
console.log(base64data);

var stream = fs.createWriteStream('/path/to/thefile.png');
stream.write(buff);
stream.end();
stream.on('finish', () => {
     //'All writes are now complete.'
});
stream.on('error', (error) => {...});

代码是有效的,我可以让它在本地工作,请尝试记录
buff
,因为这是您试图写入文件的内容(而不是
base64data
),以查看转换它是否有问题。此外,您可能希望尝试检查您的权限。您可以提供一些有关您添加的行的详细信息吗?这并不更好;它不起作用。您在等待事件之前放置了
stream.end()
。我正在使用mkpdf库,这对我来说根本不起作用,因为如果未调用end(),则永远不会到达end事件。使用mkpdf时,我实际上是在创建writestream,然后将其传递给库,然后调用pipe()方法。