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]的值