未捕获的引用错误:日期未定义| JavaScript NodeJs jQuery 文件系统

问题描述 投票:0回答:1

我正在使用 JavaScript 和 Nodejs 测试一些东西。我想向用户询问一个文件夹,它会显示文件夹中文件的名称、文件类型(可执行文件、文本文件...)和更改日期(上次更改或修改文件的时间)。代码如下:

fs.stat(testFolder, (err, stats) => {
    var time = stats.ctime
    var day = time.getDay()
    var month = time.getMonth()
    var year = time.getFullYear()
    var date = day + " " + month + " " + year
})
const testFolder = './tests/'
const fs = require('fs')
fs.readdir(testFolder, (err, files) => {

    files.forEach(file => {
        var tmp = file.split(".")
        var name = tmp[0]
        var kind = kinds[tmp[1]]
        if(kind == null) {
            kind = "File"
        }
        $( "#test" ).append( "<tr class=\"file\">\
              <td>" + name + "</td>\
              <td>" + kind + "</td>\
              <td>" + date + "</td>\
            </tr>" );
    });
})

我有可变的时间来保存完整的日期。 当我使用 console.log(date) 时它可以工作。

console.log(date)

但是当我尝试使用 jQuery 将日期变量添加到追加方法时,它给了我一个错误:

enter image description here

javascript jquery node.js filesystems
1个回答
0
投票

您在异步函数中定义并设置日期变量。无法保证回调在 readdir-callback 运行之前运行。将 readdir 调用移至 fs.stat 回调中。

 const testFolder = './tests/';
 const fs = require('fs');
 fs.stat(testFolder, (err, stats) => {
   var time = stats.ctime;
   var day = time.getDay();
   var month = time.getMonth();
   var year = time.getFullYear();
   var date = day + " " + month + " " + year;


   fs.readdir(testFolder, (err, files) => {
     files.forEach(file => {
       var tmp = file.split(".");
       var name = tmp[0];
       var kind = kinds[tmp[1]];
       if(kind == null) {
         kind = "File";
       }
       $( "#test" ).append( "<tr class=\"file\">\
                   <td>" + name + "</td>\
                   <td>" + kind + "</td>\
                   <td>" + date + "</td>\
                 </tr>" );
     });
   });
 });
© www.soinside.com 2019 - 2024. All rights reserved.