我正在使用蓝鸟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
答案 0 :(得分:1)
您没有提供任何代码示例,因此很难给出任何详细的答案,但是当您收到此类错误时,请注意以下事项。
TypeError: Cannot read property 'call' of null
意味着某些代码(也无法告诉您哪些代码因为您没有提供示例和完整的错误堆栈跟踪)尝试将某些函数绑定到某些this
对象和参数使用Function.prototype.call()
- 请参阅:
但不是它得到的函数null
。
现在您需要按照堆栈跟踪查看哪些代码尝试调用该函数以及null来源以解决您的问题。
请注意它是null
而不是undefined
所以它必须是显式提供的,而不是仅仅是函数调用的缺失参数或对象的缺失属性。这是一个重要的提示,可以让您更容易诊断问题。