Javascript nodejs中的模块IO

Javascript nodejs中的模块IO,javascript,node.js,Javascript,Node.js,我不熟悉node.js,正在尝试了解如何编写模块并在另一个文件中使用它 这是我编写的根据文件扩展名列出文件的模块 输入:文件的目录和扩展名 模块:模块_import.js var fs = require('fs') var path = require('path') module.exports = function (dir, filterStr, callback) { fs.readdir(dir, function (err, list) { if (err) {

我不熟悉
node.js
,正在尝试了解如何编写模块并在另一个文件中使用它

这是我编写的根据文件扩展名列出文件的模块

输入:文件的目录和扩展名

模块
模块_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\u import.js
的文件。)

当我通过这个命令在控制台上运行它时:
node module.js\dir\path\to\files.ext

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

谁能告诉我代码有什么问题吗


谢谢

您的代码在筛选器字符串之前添加一个前导句点(表示从命令行传递的扩展名):

但是,您还将向其传递一个扩展名,该扩展名前面带有句点:

node module.js \dir\path\to\files .ext
                                  ^

这将使代码尝试匹配
.ext
(两个前导句点),这将失败。

您的代码在筛选器字符串之前添加一个前导句点(表示从命令行传递的扩展名):

但是,您还将向其传递一个扩展名,该扩展名前面带有句点:

node module.js \dir\path\to\files .ext
                                  ^

这将使代码尝试匹配
.ext
(两个前导句点),这将失败。

您可以检查您在过程中可能会得到什么。argv[3]

此外,您将面临的问题是零件

  list = list.filter(function (file) {
      return path.extname(file) === '.' + filterStr
    });

您必须已经检查或给出了流程的值。argv[3]在问题中

那么您可以检查流程中可能会得到什么吗。argv[3]

此外,您将面临的问题是零件

  list = list.filter(function (file) {
      return path.extname(file) === '.' + filterStr
    });

您必须在问题中为process.argv[3]检查或给定了值

尝试添加
console.log(process.argv)
,以帮助了解在传递命令行参数时node.js进程实际接收到的内容。Bash和CMD执行序列化步骤,这有时会导致最终接收到的值出现意外行为,因此请确保正确转义了反斜杠等特殊字符。这是有效的。这只是一个空格的问题。一个小时后我就被它弄得头晕目眩。谢谢您最好使用调试来找出问题所在:使用
--inspect brk
选项启动脚本:
节点--inspect brk yourscriptjs
,然后在Chrome中转到
chrome://inspect
并从列表中选择脚本。您现在可以单步执行代码、检查变量等(您需要Node.V8.x的最新版本,V6.x没有)@t.J.Crowder这真是太酷了!我不知道这一点,我将尝试添加
console.log(process.argv)
,以帮助了解node.js进程在传递命令行参数时实际接收到什么。Bash和CMD执行序列化步骤,这有时会导致最终接收到的值出现意外行为,因此请确保正确转义了反斜杠等特殊字符。这是有效的。这只是一个空格的问题。一个小时后我就被它弄得头晕目眩。谢谢您最好使用调试来找出问题所在:使用
--inspect brk
选项启动脚本:
节点--inspect brk yourscriptjs
,然后在Chrome中转到
chrome://inspect
并从列表中选择脚本。您现在可以单步执行代码、检查变量等(您需要Node.V8.x的最新版本,V6.x没有)@t.J.Crowder这真是太酷了!我不知道,我以后会试试的