nodejs中的模块IO

时间:2017-09-17 08:12:05

标签: javascript node.js

我是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

在控制台上运行它时

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

有谁能告诉我这段代码有什么问题?

谢谢!

2 个答案:

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