bluebird npm TypeError:无法读取null的属性'call'

时间:2017-03-20 12:02:49

标签: node.js express npm bluebird

我正在使用蓝鸟npm,我收到上述错误

我称之为三种不同的功能&做一些数据库操作,但是我收到了这个错误。

如果我尝试使用两个函数,它正在工作但有三个函数则抛出错误,TypeError:无法读取属性'call'为null。

如果你去bluebird / js / release / using.js并评论第39行;

如果我评论这一行,那么这个问题就不会出现了。一切正常。

如果您想了解更多信息,请Click Here

This is main.js

var myModule = require('../lib/myModule');
var sync = require('deasync');

var id = 90;
var moduleObj = new moduleEntity(id);
console.log(moduleObj);

var id = 90;
var moduleObj = new moduleEntity(id);
console.log(moduleObj);

var id = 90;
var moduleObj = new moduleEntity(id);
console.log(moduleObj);

In MyModule.js

var deasync = require('deasync');
var dbEntity = require('../db/dbEntity');

module.exports = function (id) {
var outputEntity;
dbEntity(id, function(data){
outputEntity = data
});
while(outputEntity === undefined) { deasync.runLoopOnce();};
return outputEntity;

};

In dbEntery.js

var Promise = require("bluebird");
var getConnection = require('./dbcon');

module.exports = function (id,cb) {
var sql_getRecords = SELECT * from tanle_name;

Promise.using(getConnection, function (conn) {
    return conn.query(sql_getRecords).then(function(data){
        cb(data[0]);
    })
});
};

这是错误堆栈跟踪

TypeError: Cannot read property 'call' of null
at FunctionDisposer.doDispose (/home/user/Projects/project_name/node_modules/bluebird/js/release/using.js:98:18)
at FunctionDisposer.Disposer.tryDispose (/home/user/Projects/project_name/node_modules/bluebird/js/release/using.js:78:20)
at iterator (/home/user/Projects/project_name/node_modules/bluebird/js/release/using.js:36:53)
at dispose (/home/user/Projects/project_name/node_modules/bluebird/js/release/using.js:48:9)
at /home/user/Projects/project_name/node_modules/bluebird/js/release/using.js:194:20
at PassThroughHandlerContext.finallyHandler (/home/user/Projects/project_name/node_modules/bluebird/js/release/finally.js:55:23)
at PassThroughHandlerContext.tryCatcher (/home/user/Projects/project_name/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/user/Projects/project_name/node_modules/bluebird/js/release/promise.js:510:31)
at Promise._settlePromise (/home/user/Projects/project_name/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/home/user/Projects/project_name/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/home/user/Projects/project_name/node_modules/bluebird/js/release/promise.js:687:18)
at Async._drainQueue (/home/user/Projects/project_name/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/user/Projects/project_name/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/home/user/Projects/project_name/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:651:20)
at tryOnImmediate (timers.js:624:5)

Bluebird版本 - 3.5

节点版本 - v7.6.0

1 个答案:

答案 0 :(得分:1)

您没有提供任何代码示例,因此很难给出任何详细的答案,但是当您收到此类错误时,请注意以下事项。

TypeError: Cannot read property 'call' of null意味着某些代码(也无法告诉您哪些代码因为您没有提供示例和完整的错误堆栈跟踪)尝试将某些函数绑定到某些this对象和参数使用Function.prototype.call() - 请参阅:

但不是它得到的函数null

现在您需要按照堆栈跟踪查看哪些代码尝试调用该函数以及null来源以解决您的问题。

请注意它是null而不是undefined所以它必须是显式提供的,而不是仅仅是函数调用的缺失参数或对象的缺失属性。这是一个重要的提示,可以让您更容易诊断问题。