2014-05-23 2 views
0

편집 :이 질문에 신경 쓰지 마세요. 검토 대기 중입니다.자바 스크립트에서 V8 컴파일 오류가 발생했습니다.

나는 다음을 컴파일 할 수 없습니다 :

var argStr = arguments[0]; 
var options = {}; 
if (argStr){ 
    options = JSON.parse(argStr); 
} 
options.cb = function(port){ 
    // Send the port back to the master so that 
    process.send({ 
    pid: process.pid, 
    type: 'init', 
    port: port 
    }); 
}; 
require('./x2ProxyService')(options); 

노드는 다음과 같은 오류

SyntaxError: Unexpected token o 
at Object.parse (native) 
at Object.<anonymous> (E:\formwork\FRFcour\portal\controller\fwProxyServerLaunch.js:5:17) 
at Module._compile (module.js:456:26) 

그것은 "JSON"에 실패한 것으로 나타납니다하지만 난 이유를 모른다에게 제공합니다.

+2

은 argStr 유효 JSON입니까? – tymeJV

+0

내 부분에 총 실패. 모듈이 child_process로 호출되었지만 --debug-brk가 올바르게 전달되지 않았습니다. 그래서 프로세스는 디버거를 기다리지 않고 .parse()에 전달 된 값은 실제로 유효하지 않습니다. 나는 열 번호가 재미있는 위치를 지적했기 때문에 컴파일 오류로 인한 것이지만 말이다. 그것은 나쁜 질문이며 제거되어야합니다. –

답변

2

먼저 args가 자바 스크립트 객체인지 확인한 다음 문자열인지 확인해야합니다.

문자열 인 경우 구문 분석을 시도합니다. 작동하지 않으면 문제가 발생합니다 ....

var argStr = arguments[0], 
    argeType = typeof argStr; 
if (argeType === 'object') { 
    options = argStr; 
} else if (argeType === 'string') { 
    try { 
     options = JSON.parse(argStr); 
    } catch (e) { 
     console.error('argStr is neith an object, nor JSON'); 
     console.error(e); 
     return 
    } 
} else { 
    console.error('ummm houston we have a problem... ERRRZ!'); 
} 
+0

정말로 '우리가 문제가있는 것'을 해결해야 할 필요가있는 경우 [jsonrepair] (https://www.npmjs.org/package/jsonrepair) 모듈을 확인하십시오. 경이로운 일을 쉽게 얻을 수 있습니다 가는 –

+0

감사합니다 @DmitryMatveev. 매우 감사. –

0

JSON.parse()은 항상 try-catch 문에 입력해야합니다. argStr의 값이 유효한 JSON이 아닌지 확인하십시오. 당신이 구문 분석하려는 값 (argStr)가 이미 자바 스크립트 객체가 아닌 문자열이기 때문에

if (argStr) { 
    try { 
     options = JSON.parse(argStr); 
    } catch (error) { 
     console.log('JSON error: ' + error); 
    } 
} 
0

일반적으로이 특정 오류가 발생합니다.

관련 문제