为什么 fs.createWriteStream 抛出“错误:ENOENT:没有这样的文件或目录”错误?

Mat*_*t.G 7 javascript asynchronous file fs node.js

这是代码:

      const dest = fs.createWriteStream('./src/Pages/downloads/' + fileName + '.' + type)

      await drive.files.export({
        fileId: fileId, mimeType: newType}, 
        {responseType: 'stream'},
        function(err, response){
        if(err)return console.log(err);
        response.data.on('error', err => {
            console.log("Found at 911 " + err);
        })
        .pipe(dest, function(){console.log('file path written.')})
        .on('end', ()=>{
            console.log("sent file.")
        })
      });
Run Code Online (Sandbox Code Playgroud)

有几件事需要解释一下。

  1. 这是一个 post 请求,它从 google 云端硬盘文件中获取多个变量,例如名称、id 和 mimetype。这些是 WriteStream 请求中显示的“fileName”和“type”变量。它们已经是预定义的,而不是问题。因此,为了解决这个问题,假设变量类似于 var fileName = test、var type = pdf 和 var newType = "application/pdf"。
  2. drive.files.export 函数是对 Google Drive api 的异步调用,它查找具有“fileId”中注明的特定 ID 的文件/文件夹/项目并将其导出。我在这里试图实现的是将适合该特定 id 的文件导出到由 dest 定义的 WriteStream 中。
  3. “./src/Pages/downloads/”路径确实存在。显然,特定文件(对于测试用例,假设为 test.pdf)还没有,但这就是我使用 createWriteStream 的原因。
  4. 我已经尝试将路径从 './src/Pages/downloads/' 更改为 __dirname + "/src/Pages/downloads" ,并且出现以下相同的错误。

综上所述,我收到一个如下所示的错误。

错误:ENOENT:没有这样的文件或目录,请打开'./src/Pages/downloads/test.pdf 在 WriteStream 实例上发出“错误”事件:位于internal/fs/streams.js:375:14

此错误发生在 const dest = fs.createWriteStream(...) 事件中。有人能解释一下发生了什么事吗?真的很感激。谢谢你!

小智 2

就我而言,最后我发现这是因为文件名不正确,它包含:.

我的系统是windows。