如何修复ENOENT:没有这样的文件或目录?

时间:2019-10-22 06:26:12

标签: node.js raspberry-pi3

我正在编写节点js代码,以将图片从Raspberry Pi上传到我的Google云端硬盘

我尝试上传在同一文件夹中生成的图像文件。 Node js似乎忽略了该文件。尽管该文件存在,但始终返回ENOENT。我已经手动验证了文件的存在。路径和文件名正确。我还通过将文件名打印到控制台进行了验证,它似乎匹配。

    var fileName1 = Date.now();
    const path = require('path');
    const fs1 = require('fs');
    var fN = fileName1+".jpg";
    console.log("Only filename : "+fN);
    const finalPath = path.join(__dirname, fN);
    console.log("Final filename : "+finalPath);
    var media = {
            mimeType: 'image/jpeg',
            //PATH OF THE FILE FROM YOUR COMPUTER
            body: fs1.createReadStream(finalPath)
    };

输出

Only filename : 1571724785329.jpg
Final filename : /home/pi/nodecode/1571724785329.jpg
events.js:174
      throw er; // Unhandled 'error' event
      ^
Error: ENOENT: no such file or directory,open
'/home/pi/nodecode/1571724785329.jpg'

2 个答案:

答案 0 :(得分:1)

非常感谢每个人分享他们的观点,并尝试为我找出答案。我发现了问题。在nodejs试图查找文件的那一瞬间,该文件尚未创建。文件创建和上传是并行进行的。所以我用python代替了nodejs。

答案 1 :(得分:0)

您的代码似乎对我有用。我看到的唯一问题是创建文件名的方式。无论以前如何生成,文件名都不会与Date.Now()相同。

因此,代码执行的顺序是造成问题的唯一可能原因。例如,当执行用于创建读取流的代码时,尚未创建您希望在可读流中加载的文件。

尝试

调试代码执行顺序,找出是在执行这段代码之前还是之后创建文件fs1.createReadStream(finalPath)

var fileName1 = "wf";
const path = require('path');
const fs1 = require('fs');
var fN = fileName1 + ".jpg";
console.log("Only filename : " + fN);
const finalPath = path.join(__dirname, fN);
console.log("Final filename : " + finalPath);
var media = {
    mimeType: 'image/jpeg',
    //PATH OF THE FILE FROM YOUR COMPUTER
    body: fs1.createReadStream(finalPath)
};

console.log(media);

我得到的输出。

Only filename : wf.jpg
Final filename : D:\dir1\dir2\myproject\wf.jpg
{ mimeType: 'image/jpeg',
  body:
   ReadStream {
     _readableState:
      ReadableState {
        objectMode: false,
        highWaterMark: 65536,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: null,
        pipesCount: 0,
     mode: 438,
     start: undefined,
     end: Infinity,
     autoClose: true,
     pos: undefined,
     bytesRead: 0,
     closed: false } }