我是node.js
的新手,并试图找出如何编写模块并在另一个文件中使用它。
这是我根据文件扩展名列出文件的模块。
输入:文件的目录和扩展名。
模块: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
我没有在控制台上获得任何输出。
有谁能告诉我这段代码有什么问题?
谢谢!
答案 0 :(得分:0)
您的代码在过滤字符串之前添加一个前导句点(表示您从命令行传递的扩展名):
var object = JSON.parse('{"#text":"https://lastfm-im...png","size":"extralarge"}')
console.log(object['#text'])
但是,您还要传递一个前缀为句点的扩展程序:
return path.extname(file) === '.' + filterStr
^^^
这将使代码尝试匹配node module.js \dir\path\to\files .ext
^
(两个前导句点),这将失败。
答案 1 :(得分:0)
那么你能检查一下你在进程中可能会得到什么.argv [3]
此外,您将面临的问题是部分
list = list.filter(function (file) {
return path.extname(file) === '.' + filterStr
});
您必须在问题
中检查或给出process.argv [3]的值