nodejs中的模块IO

我是node.js新手,试图弄清楚如何编写一个模块并在另一个文件中使用它。

这是我写的根据文件扩展名列出文件的模块。

input:文件的目录和扩展名。

模块module_import.js

 var fs = require('fs') var path = require('path') module.exports = function (dir, filterStr, callback) { fs.readdir(dir, function (err, list) { if (err) { return callback(err) } list = list.filter(function (file) { return path.extname(file) === '.' + filterStr }) callback(null, list) }) } 

module.js (已导入module_import.js的文件)

 var filterfile = require('./module_import.js'); var dir = process.argv[2]; var ext = process.argv[3]; filterfile(dir,ext,function(err,list){ if(err){ return console.log(err); } list.forEach(function(file){ console.log(file); }) }); 

当我通过这个命令在控制台上运行它时: node module.js \dir\path\to\files .ext

我没有在控制台上得到任何输出。

任何人都可以告诉我什么是错的代码?

谢谢!

您的代码在filterstring(代表您从命令行传递的扩展名)之前添加了一个前导句点:

 return path.extname(file) === '.' + filterStr ^^^ 

但是,您也将它传递给一个以句号开头的扩展名:

 node module.js \dir\path\to\files .ext ^ 

这将使代码尝试匹配..ext (两个主要时期),这将失败。

那么你可以检查你可能在process.argv [3]

而且你将要面对的问题是这个部分

  list = list.filter(function (file) { return path.extname(file) === '.' + filterStr }); 

你必须在问题中检查或给出process.argv [3]的值