首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义的NodeJs不是函数

未定义的NodeJs不是函数
EN

Stack Overflow用户
提问于 2015-10-01 06:53:41
回答 1查看 256关注 0票数 0

我正在使用NodeJs运行这段代码--这是我的自定义模块

代码语言:javascript
复制
call = {};
call.hangup = {
    searching: function(number, mysql, validator){
        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var query = "{sql...}";
        try
        {   
            mysql.query(query, function(err, rows, fields) {        
            if (err) throw err; 
                if(!validator.isNull(rows))
                {                                       
                    return rows.leadid;                     
                }else {
                    return false;
                }
            });
        }catch(error)
        {
            console.log(error);
        }
    },
    test: function(number, mysql, validator){
        var self = this;
        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var result = self.searching(number, mysql, validator);
        console.log(result);
    }
};
module.exports = call;

然后在我的主文件中调用test函数

代码语言:javascript
复制
call.hangup.test(number, connection, validator);

但是我在我的控制台中得到了这个错误代码:

代码语言:javascript
复制
                var result = self.searching(leadid, mysql, validator);
                                  ^
TypeError: undefined is not a function

我怎么才能修好它?为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 06:57:34

您的this引用(分配给self variable)指向test function,而测试函数没有一个名为searching.That的函数,这就是为什么会出现此错误。您应该以这种方式调用searching函数call.hangup.searching

代码语言:javascript
复制
call = {};
call.hangup = {
    searching: function(number, mysql, validator){
        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var query = "{sql...}";
        try
        {   
            mysql.query(query, function(err, rows, fields) {        
            if (err) throw err; 
                if(!validator.isNull(rows))
                {                                       
                    return rows.leadid;                     
                }else {
                    return false;
                }
            });
        }catch(error)
        {
            console.log(error);
        }
    },

    test: function(number, mysql, validator){

        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var result = call.hangup.searching(number, mysql, validator);
        console.log(result);
    }
};
module.exports = call;

编辑:您也可以将self变量分配给call.hangup

代码语言:javascript
复制
test: function(number, mysql, validator){
            var self = call.hangup;
            this.number = number;
            this.mysql = mysql;
            this.validator = validator;
            var result = self.searching(number, mysql, validator);
            console.log(result);
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32881177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档