Javascript 节点Js:在下面的文件筛选器代码中找不到错误

Javascript 节点Js:在下面的文件筛选器代码中找不到错误,javascript,node.js,Javascript,Node.js,我已经编写了一些小代码,以便按扩展名过滤文件。我的观点逻辑是好的,但我无法指出为什么我没有得到预期的输出 请看一看 代码 var fs = require('fs') var path = require('path') path_name = process.argv[2] ext_name = "."+process.argv[3] var filter_function = function ( path_name,exthide_name,callback) { fs.rea

我已经编写了一些小代码,以便按扩展名过滤文件。我的观点逻辑是好的,但我无法指出为什么我没有得到预期的输出

请看一看

代码

var fs = require('fs')
var path = require('path')

path_name = process.argv[2]
ext_name = "."+process.argv[3]

var filter_function = function ( path_name,exthide_name,callback) {
    fs.readdir(dirpath,function(err,list) {
        if(err) return console.error(err)

        for ( var i in list) {
            if(path.extname(list[i]) == ext_name)
                console.log(list[i])
        }
    })
}

module.exports=filter_function
输出:

linuxmen@linuxmen-fresh:~/test/test1$ node ownModuleNode.js /home/linuxmen/test/test1/ js
linuxmen@linuxmen-fresh:~/test/test1$
但是我在那个目录中有很多扩展名为
js
的文件

证明:

linuxmen@linuxmen-fresh:~/test/test1$ ls *js
check_mod1.js  ex1.js  ex2.js  ex3.js  ex4.js  ex5.js  ex6.js  ex7.js  ex8.js  filter.js  filter_use.js  modse.js  ownModuleNode.js  se.js  use_mod1.js  using_module.js
请帮忙,我错过了什么

更新-1:我使用上面的代码作为一个模块文件,并在这里调用它

使用上述代码的文件

var mymodule = require('./ownModuleNode')
mymodule.filter_function(process.argv[2],process.argv[3])
更新2:

var fs = require('fs')
var path = require('path')


path_name = process.argv[2]
ext_name = "."+process.argv[3]

console.log("path_name :",path_name,"extname:",ext_name)
var filter_function = function ( path_name,ext_name,callback) {
fs.readdir(path_name,function(err,list) {
if (err) console.error(err)
console.log(list)
 for ( var i in list) {
 if(path.extname(list[i]) == ext_name)
  console.log(list[i])
 }

})
}

module.exports=filter_function
输出:

linuxmen@linuxmen-fresh:~/test/test1$ node ownModuleNode.js /home/linuxmen/test/test1/ js
pathanme : /home/linuxmen/test/test1/ extname: .js

谢谢。

看起来您是在直接导出函数。当您需要()时,您只需要得到函数。您需要在应用程序中使用您的模块。将其放在'app.js'中与ownModuleNode.js位于同一目录中:

var filterFunction = require('./ownModuleNode');
filterFunction(process.argv[2], process.argv[3]);
然后用以下词语来称呼它:

node app ~/Documents/dev/project .js
产出:

app.js
ownModuleNode.js

请注意,当您传递扩展名时,您需要前面的点,因为path.extname()返回点。

您是否检查了路径是否正确,并且没有必要转义斜杠?您是否在某处调用了您的函数?@Tushar感谢您的研究,是,路径正确,无需转义。@Maxx我在其中提到了回调,因为这是一个异步文件,我将此文件用作另一个文件的模块。这不是很好吗?@Raja你能提供你实际调用
filter\u函数的代码吗?
?我想我也是这么做的,`var mymodule=require('./ownModuleNode')mymodule(process.argv[2],process.argv[3])。但是一个好消息是,现在我至少能够通过上面的代码访问我的模块了。但我的模块代码似乎有问题@QoP感谢您的建议。您是否在我的主模块中发现任何错误,因为我无法找到,但我没有得到预期的行为。您得到的是什么行为?我用本地适用的步骤更新了我的答案。我认为您有两个潜在的问题,您试图直接从命令行调用您的模块,而不是创建使用您的模块的应用程序。第二,看起来你在传递“js”,你需要传递扩展名的“.js”。啊,那为什么它对我不起作用呢。无论如何,谢谢你,我的朋友。我将尝试重新启动一次