如何在Node.js中获取目录项的数量

时间:2018-11-15 15:04:20

标签: javascript node.js

我需要获取Node.js中特定目录的项目数

如果我收到类似的东西

var dirItems = fs.readdirSync(__dirname+'/my_dir');

然后获取诸如

的特定项目
dirItems[1]

一切都很好

但是如果我尝试获得他们的电话号码

dirItems.length

Object.keys(dirItems).length

该页面在浏览器中不起作用

如何获取目录项的数量?


已更新

我的完整代码:

var http = require('http'),
    fs = require('fs');

http.createServer(function(req, res) {

    var dirItems = fs.readdirSync(__dirname+'/my_dir');

    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(dirItems.length);

}).listen(80, 'localhost');

2 个答案:

答案 0 :(得分:1)

这是我要怎么做:

const fs = require('fs');
const dir = './somedir';

fs.readdir(dir, (err, files) => {
  console.log(files.length);
});

答案 1 :(得分:1)

我能够重现您收到的错误。

基本的http服务器类的

res.end()对于发送的内容非常挑剔。您必须给它一个 string (这里出现的错误应该是一个大提示)。

因此,请更改此内容:

res.end(dirItems.length);

对此:

res.end(dirItems.length.toString());

而且,它对我有用。我能够重现您的原始错误,然后通过进行此简单的更改使其能够工作。

从逻辑上讲,您只能将字符串数据作为http响应发送,因此显然res.end()不够聪明,无法自行尝试进行字符串转换。您必须自己做。

仅供参考,如果您使用诸如Express之类的更高级别的框架,它对您发送的内容的容忍度更高(在这种情况下,它将尝试进行字符串转换)。