TypeError:过去必须是字符串或缓冲区

时间:2018-10-13 14:46:08

标签: node.js error-handling

我正在尝试使用node列出特定文件夹中的所有文件。 下面是我的代码:

const fs = require('fs');
const dir = 'E:\\';
fs.readdir(dir,(err, files)=>{
    console.log(files);
    for (let ite in files) {
        var file_path = files[ite].toString();
        fs.appendFile('filelist.csv', file_path + ',' + fs.statSync(dir.concat(file_path).size) + "\n", (err)=>{
            if (err) {
            fs.writeFileSync('error.txt', err);
            console.log('The process is failed!!!');
            }
        })
    }

})

但是我收到如下错误:

fs.js:948
  binding.stat(pathModule._makeLong(path));
          ^

TypeError: path must be a string or Buffer
    at Object.fs.statSync (fs.js:948:11)
    at fs.readdir (D:\check_duplicate\check_duplicate.js:8:60)
    at FSReqWrap.oncomplete (fs.js:135:15)

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

问题在于,这里(您将访问未定义的字符串的size属性)

fs.statSync(dir.concat(file_path).size)

这将得出

fs.statSync(undefined)

我认为您打算执行以下操作:

fs.statSync(dir.concat(file_path)).size