想知道如何调试 Node.js学习节点“filter ls”练习
Wondering how to debug Node.js learnyounode "filter ls" exercise
我正在完成学习节点练习。特别是"过滤器ls"。如果您不熟悉此练习,请参阅此说明。
这是官方解决方案:
var fs = require('fs');
var path = require('path');
fs.readdir(process.argv[2], function (err, list) {
list.forEach(function (filename) {
if (path.extname(filename) === '.' + process.argv[3]) {
console.log(filename);
}
});
});
这是我的解决方案:
var fs = require('fs');
var path = require('path');
var directory = process.argv[2];
var fileExtension = "." + process.argv[3];
function sortFiles (callback){
fs.readdir(directory, function(err,files){
if(err) return callback(err);
callback(null,files);
});
};
sortFiles(function(err,files){
var fileExt = "";
for(var i = 0; i < files; i++){
debugger;
fileExt = path.extname(files[i]);
if(fileExt === fileExtension){
console.log(files[i]);
};
};
});
问题:
我的代码不输出任何内容。据我所知,我的代码和官方解决方案之间最大的区别如下:
list.forEach(function (filename) {
if (path.extname(filename) === '.' + process.argv[3]) {
console.log(filename);
}
与:
for(var i = 0; i < files; i++){
fileExt = path.extname(files[i]);
if(fileExt === fileExtension){
console.log(files[i]);
};
};
2 问题:
1) 如何调试此代码?我试过node debug node.js
.从中我可以看到,当我的目录是包含 cs 文件和 js 文件的文件夹时,files 是一个数组,但每个索引都包含 "。
2)为什么我的简单for循环方法不起作用?他们为什么选择.foreach
?除了更简洁之外,还有什么原因吗?
1) https://github.com/node-inspector/node-inspector
2)忘记检查length
:
for(var i = 0; i < files.length; i++){
--^--
但forEach
读起来更好,而且更惯用。
相关文章:
- 节点导出返回一个空对象
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 如何处理node.js节点mongodb中的连接和查询队列
- 将DOM节点值与字符串Javascript进行比较
- 有没有更好的动手、具体的方法来学习Javascript
- 节点fs.stat名称未定义
- 无法安装节点sass相关性
- 节点协同与生成器和Promise并行流量控制
- 节点.js将变量显示为 HTML
- 将节点数据分配给另一个变量jstree
- 想知道如何调试 Node.js学习节点“filter ls”练习
- 学习节点.js的先决条件
- 回调先运行?- 学习你节点杂耍
- 关于学习节点练习5的问题