在nodejs中访问网络驱动器?

mat*_*xpl 4 javascript networking node.js

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

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

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

jfr*_*d00 7

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

  1. 使用所需目录的完整路径(驱动器号即可,但也可以在 Windows 中使用 UNC 路径)。
  2. 使用额外的反斜杠转义字符串定义中的任何反斜杠。
  3. 始终在回调中使用错误处理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);
  });
});
Run Code Online (Sandbox Code Playgroud)

我刚刚在自己的硬盘上尝试了这段代码,它工作得很好。


而且,仅供参考,我现在几乎总是for/of在现代 Node.js 中使用 ES6,而不是.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);
  }
});
Run Code Online (Sandbox Code Playgroud)