我正在尝试在网络中的S:/ test文件夹中列出文件(这不是本地目录)。我想知道如何做到这一点?到目前为止的代码如下:



const testFolder = 's:/test';
const fs = require('fs');
fs.readdir(testFolder, (err, files) => {
  files.forEach(file => {
    console.log(file);
  });
})





我尝试将路径更改为S:test,s:\ test无济于事,错误始终是“无法读取未定义的'forEach'”

最佳答案

如果这是Windows(我认为是Windows),那么您需要做几件事:


使用完整路径(驱动器号可以,但是您也可以在Windows中使用UNC路径)到所需目录。
使用额外的反斜杠转义字符串定义中的所有反斜杠。
始终在fs.readdir()回调上使用错误处理,因此,如果有错误,则可以准确地看到错误是什么。


工作代码:

const fs = require('fs');
const testFolder = 's:\\test';

fs.readdir(testFolder, (err, files) => {
  if (err) return console.log(err);
  files.forEach(file => {
    console.log(file);
  });
});


我只是在自己的硬盘上尝试过此代码,所以效果很好。



而且,仅供参考,我现在几乎总是在现代的node.js中使用ES6 for/of而不是.forEach(),因为它对解释器的效率更高,并且可以为您提供更多的循环控制(例如,您可以使用break退出循环)。

const testFolder = 's:\\test';
const fs = require('fs');

fs.readdir(testFolder, (err, files) => {
  if (err) return console.log(err);
  for (let file of files) {
    console.log(file);
  }
});

关于javascript - 在nodejs中访问网络驱动器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42214029/

10-13 00:36