Node.js fs.createWriteStream 就算报错了也还是会生成文件?

当执行 this.write 报错的时候,catch到错误以后还生成了 filename 这个文件,这里能有什么设置可以让出错的时候不生成文件,我现在只有加上 fs.unlink去手动删除。

  writeFile(filename, options) {
    const stream = fs.createWriteStream(filename);

    return new Promise((resolve, reject) => {
      stream.on('finish', () => {
        resolve();
      });
      stream.on('error', error => {
        fs.unlink(filename, err =>{
          reject(err);
        });
        reject(error);
      });

    
      this.write(stream, options)
        .then(() => {
          stream.end();
        })
        .catch(err => {
          stream.emit('error', err);
          // reject(err);
        });
    });
  }
阅读 2.7k
2 个回答

没有这样的能力,只能自己手动删,默认flagw
image.png

  writeFile(filename, options) {
    return new Promise((resolve, reject) => {
      this.write(new stream.PassThrough(), options)
        .then((dataStream) => {
          const fileStream = fs.createWriteStream(filename);
          fileStream.on('finish', () => {
            resolve();
          });
          fileStream.on('error', error => {
            fs.unlinkSync(filename);
            reject(error);
          });
          dataStream.pipe(fileStream);
        })
        .catch(err => {
          reject(err);
        });
    });
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题