节点Js:无法在下面的文件过滤器代码中找到错误

时间:2016-08-12 11:51:22

标签: javascript node.js

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

请看一下。

CODE

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

谢谢。

1 个答案:

答案 0 :(得分:1)

看起来您正在直接导出该功能。当你需要()时,你就得到了这个功能。您需要在应用程序中使用您的模块。将它放在'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()返回点。