2016-06-06 2 views
1

JavaScript, Node.js 또는 ParseServer 관련 문제인지 확실하지 않습니다. 예상대로NodeJS가 중단되고 오류가 발생하지 않으며 충돌이 발생하지 않음

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"); 
       } 
      }); 
}); 

이 잘 작동 :

나는 다음과 같은 CloudCode 기능 (ParseServer가) 있습니다. 지금 나는 다음과 같이 라인 중 하나가 실수를 가지고 변경 :

responseData.fromServer_scores = resultsss; 

물론, resultsss가 어디 정의되어 있지 않습니다. JavaScript로 컴파일 할 때 시간 오류가 발생하지 않는다는 것을 알고 있지만 적어도 런타임 오류가 있어야합니다. 그러나 내가 이것을 실행할 때, 그것은 단지 '매달린다'. 콘솔에 아무것도없고 오류도 없다. 단순히 그 줄을 지나서 컨트롤이 계속되지 않는다. (내가 잘못된 줄 앞뒤에 console.log를 넣으면 나는 전에 로그를 얻는다.)

왜 이런가요? 런타임 오류를 발생시키는 방법이 있습니까? 어쩌면 일부 JavaScript/Node.js 구성?

참고 : try-catch로 포장하면 콘솔에 'ReferenceError: resultsss is not defined'이 표시되지만 모든 간단한 코드 줄을 시도 할 수는 없습니다.

참고 : 행운이없는 "use strict";을 사용해 보았습니다.

+0

악의적으로 오류를 삼키고있는 또 다른 try-catch가 있어야합니다. – OrangeDog

+0

약속 사용을 시도 했습니까? 'query_scores.find(). then (... successHandler ...). catch (... errorHandler ...)'와 같은 것을 시도 할 수 있습니다. 이 방법은 이론적으로 약속의 포수는 또한 'ReferenceError'를 잡을 것입니다. –

답변

1

다음은 내가받은 대답은 Github입니다.

약속을 처리 할 때 체인에서 발생할 수있는 모든 예외를 처리하기 위해 단일 .catch() 호출로 .then() 호출 체인을 끝내는 것이 좋습니다.

var userQuery = new Parse.Query("User"); 
userQuery.get("XhmDC123wh").then(function (user) { 
    throw new Error('!'); 
}).catch(function(err) { 
    // err === the error above 
});