【问题标题】:Error callback not recognized错误回调无法识别
【发布时间】:2013-12-13 16:48:51
【问题描述】:

我正在编写一个 learnunode 教程,但遇到了一个问题,所以我需要你的帮助,因为该软件没有提供足够详细的答案。

我正在进行“使其模块化”的步骤,该步骤要求将代码分成模块。我的模块是:

module.exports = function (dir, filter, err){
    var fs = require("fs");
    var re = new RegExp('\\.' + filter + '$');

    fs.readdir(dir, function(err, list) {
        if (err) return callback(err);

        for (var i=0; i < list.length; i++) {
            var name = list[i];

            if(name.match(re))
                console.log(list[i]);
        };
    });
}

但教程说消息不正确:

您的附加模块文件:/home/user/learnunode/submodule.js 确实 似乎没有回传从fs.readdir() 收到的错误

在回调中使用以下惯用的 Node.js 模式 fs.readdir(): if (err) return callback(err)

失败

但我正在使用这些行。我做错了什么?

编辑: 调用模块是这样的: var mod = require('./submodule');

var mod = require('./submodule');

var folder = process.argv[2];
var extension = process.argv[3];
mod(folder, extension);

也许我应该发现错误或将其声明并传递给模组?

【问题讨论】:

  • 戴着我猜的帽子,但是在这种情况下,return 语句末尾的分号会有所帮助吗?
  • 通常,如果您不使用花括号来构建代码,则将returnif 放在同一行。也许就是这样。
  • 感谢您的回答,但这些都没有改变结果。我会用新代码更新我的问题。
  • @GruffBunny 看似鲜为人知的事实,Javascript 不需要; 来终止一行。 stackoverflow.com/questions/4002234/…
  • @JustinWood 该建议更针对解析 js 以提供错误消息的任何内容。不过,最好添加分号,否则插入分号可能会导致意外行为。

标签: javascript node.js


【解决方案1】:

callback 是未定义的,所以你不能像函数一样调用它。我不确定正确的代码是什么,我怀疑将您的第一行更改为:

module.exports = function (dir, filter, callback){

会解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多