不确定这是否是JavaScript,Node.js或ParseServer特定问题。
我有以下CloudCode功能(ParseServer):
Parse.Cloud.define('testingScores', function(request, response)
{
var responseData = {"test_key1": "test_value1"};
var query_scores = new Parse.Query("Score");
query_scores.find({
success: function(results) {
responseData.fromServer_scores = results;
response.success(responseData);
},
error: function(error) {
response.error("scores lookup failed");
}
});
});
这可以正常工作。 现在我改变其中一行有一个错误如下:
responseData.fromServer_scores = resultsss;
显然,resultsss
未在任何地方定义。我知道不要期望JavaScript编译时错误,但至少应该有运行时错误。但是,当我运行它时,它只是“挂起”。控制台中没有任何内容,没有错误,只是控件没有继续超过该行(如果我在错误的行之前和之后放置了console.log,我之前只得到日志)。
这是为什么?有没有办法让它抛出运行时错误?也许是一些JavaScript / Node.js配置?
注意:
如果我将它包装在try-catch中,我会在控制台中获得'ReferenceError: resultsss is not defined'
,但我无法尝试捕获这样的每一段代码。
注意:我试了"use strict";
没有运气。
答案 0 :(得分:1)
以下是我从Github得到的答案。
在处理Promises时,最好使用单个.catch()来结束.then()调用链,以处理链中可能发生的任何异常。
var userQuery = new Parse.Query("User");
userQuery.get("XhmDC123wh").then(function (user) {
throw new Error('!');
}).catch(function(err) {
// err === the error above
});