【发布时间】:2017-11-28 05:35:53
【问题描述】:
我尝试使用nodejs的q库,我使用Q.fcall然后出现如下错误。
file_path/node_modules/q.js:155
throw e;
^
TypeError: Cannot read property 'apply' of undefined
at Promise.apply (/Users/name/Desktop/Programming/video_tutorial_archive/node_modules/q/q.js:1185:25)
at Promise.promise.promiseDispatch (/Users/name/Desktop/Programming/video_tutorial_archive/node_modules/q/q.js:808:41)
at /Users/name/Desktop/Programming/video_tutorial_archive/node_modules/q/q.js:1411:14
at runSingle (/Users/name/Desktop/Programming/video_tutorial_archive/node_modules/q/q.js:137:13)
at flush (/Users/name/Desktop/Programming/video_tutorial_archive/node_modules/q/q.js:125:13)
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
以下是我的代码:
app.get('/',function(req,res){
Q.fcall(sql_query.select_comment(con,comment))
.then(function(){
var deferred=Q.defer();
con.query("SELECT * FROM "+table_video, function (err, result) {
console.log("step 2 finished");
console.log("comment is "+comment);
// if (err) throw err;
query_result=result;
// deferred.resolve();
// console.log(query_result);
})
// return deferred.promise;
}).then(function(){
console.log("step 3 finished");
console.log("comment is "+comment);
console.log(query_result);
res.render('index',{
result:query_result,
comment:comment.comment
});
}).done();
});
我可以用 Q.defer 解决它,但我想用 fcall 代替。它更干净,没有所有的 deferred.promise 和 deferred.resolve。
是什么导致错误“无法读取未定义的属性'应用'”?以及如何解决?
【问题讨论】: