我需要获取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');
答案 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之类的更高级别的框架,它对您发送的内容的容忍度更高(在这种情况下,它将尝试进行字符串转换)。