Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node js-fs.unlink只删除forEach序列中的第一个文件,然后抛出enoint,而不抛出这样的文件或目录_Javascript_Node.js_Fs - Fatal编程技术网

Javascript node js-fs.unlink只删除forEach序列中的第一个文件,然后抛出enoint,而不抛出这样的文件或目录

Javascript node js-fs.unlink只删除forEach序列中的第一个文件,然后抛出enoint,而不抛出这样的文件或目录,javascript,node.js,fs,Javascript,Node.js,Fs,我正在尝试编写一个函数,该函数将删除目录中超过1天的文件。目前,我的逻辑如下: 读取目录中的所有文件并将它们放入数组中 对于每个文件,检查当前ctime与文件的ctime之间的差异是否大于1天 如果是,则将其删除 检查数组中的下一个文件 我完成上述工作的代码如下: var fs = require('fs'); var path = require('path'); var uploadsDir = __dirname + '/uploaded_files' fs.readdir(upl

我正在尝试编写一个函数,该函数将删除目录中超过1天的文件。目前,我的逻辑如下:

  • 读取目录中的所有文件并将它们放入数组中
  • 对于每个文件,检查当前
    ctime
    与文件的
    ctime
    之间的差异是否大于1天
  • 如果是,则将其删除
  • 检查数组中的下一个文件
我完成上述工作的代码如下:

var fs = require('fs');
var path = require('path');

var uploadsDir = __dirname + '/uploaded_files'

fs.readdir(uploadsDir, function(err, files) {
    var removedFiles = [];
    files.forEach(function(file, index) {
        filePath = path.join(uploadsDir, file);
        console.log(filePath);

        fs.stat(filePath, function(err, stat) {
            if (err) {
            return console.error(err);
            }

            var now = new Date();
            var endTime = new Date(stat.ctime);
            var diffDays = parseInt((now - endTime) / (1000 * 60 * 60 * 24))
            console.log(now);
            console.log(endTime);
            console.log(diffDays + ' days');

            if (diffDays >= 1) {
                fs.unlink(filePath, function(err) {
                    if (err) {
                        return console.log(err);
                    }
                });
                removedFiles.push(file)
                console.log(filePath + ' has been removed!');
                console.log(file);
                console.log('\n');
            }
        }); // end of fs.stat
    }); // end of forEach
});
到目前为止,我的代码只成功地删除了数组
someotherfile.png
中最后一个文件。然后它开始这样抱怨:

/Users/username/api/uploaded_files/.DS_Store
/Users/username/api/uploaded_files/anotherfile.png
/Users/username/api/uploaded_files/somefile.png
/Users/username/api/uploaded_files/someotherfile.png
2018-06-06T09:21:30.010Z
2018-06-04T21:50:33.546Z
1 days
/Users/username/api/uploaded_files/someotherfile.png.png has been removed!
.DS_Store

2018-06-06T09:21:30.012Z
2018-06-04T21:50:46.509Z
1 days
/Users/username/api/uploaded_files/someotherfile.png has been removed!
anotherfile.png

2018-06-06T09:21:30.012Z
2018-06-04T21:50:46.508Z
1 days
/Users/username/api/uploaded_files/someotherfile.png has been removed!
somefile.png

{ Error: ENOENT: no such file or directory, unlink '/Users/username/api/uploaded_files/somefile.png'
  errno: -2,
  code: 'ENOENT',
  syscall: 'unlink',
  path: '/Users/username/api/uploaded_files/somefile.png' }

{ Error: ENOENT: no such file or directory, unlink '/Users/username/api/uploaded_files/somefile.png'
  errno: -2,
  code: 'ENOENT',
  syscall: 'unlink',
  path: '/Users/username/api/uploaded_files/somefile.png' }
{ Error: ENOENT: no such file or directory, unlink '/Users/username/api/uploaded_files/somefile.png'
  errno: -2,
  code: 'ENOENT',
  syscall: 'unlink',
  path: '/Users/username/api/uploaded_files/somefile.png' }

有人能告诉我出了什么问题吗?

结果是我没有将我的
文件路径
声明为变量。感谢@CertainPerformance

var fs = require('fs');
var path = require('path');

var uploadsDir = __dirname + '/uploaded_files'

fs.readdir(uploadsDir, function(err, files) {
    var removedFiles = [];
    files.forEach(function(file, index) {
        var filePath = path.join(uploadsDir, file); //added this var here and it works now!
        console.log(filePath);

尝试声明变量,例如使用
const
(对于
filePath