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这真是太酷了!我不知道,我以后会试试的