2017-01-28 5 views
1

매개 변수를 가져 와서 적절한 Suitelet에 제출 한 다음 생성 된 JSON을 Netsuite에서 노드로 전달하는 포틀릿 양식 스크립트를 만들었습니다. js Heroku 서버.Netsuite에서 Heroku 로의 JSON HTTP 요청 구문 분석 오류 "SyntaxError : 예상치 못한 토큰 p"

내가 만든 json은 정상이며 정확한 값을 반환하지만 요청을 보낼 때 heroku 로그는 오류 SyntaxError: Unexpected token p을 제공합니다.

이상한 점은 서버를 로컬에서 실행하고 우편 배달부를 통해 보낼 때이 모든 것이 효과적이라는 것입니다. 문제를 일으키는 Netsuite 요청을 통해 모든 것을 전송할 때입니다. 또한 body-parser를 오류 참조 body-parser로 사용할 수도 있습니다. 나는이 느낌이 answer 올바른 경로에 있었지만 결국 도움이되지 않았다. 시정하는 방법에 대한 아이디어가 있습니까?

json으로 요청을 처리하는 Suitelet POST 요청 :

var json = { 
    "par": { 
     "id":request.getParameter("custpage_id"), 
     "num":request.getParameter("custpage_num") 
     }, 
     "in": { 
     "headers":temp.toString() 
     } 
    }; 

for (var i = 0; i < info.length; i++){ 
     var newVal = "val" + (i+1); 
     json.in[newVal] = info[i]; 
} 
nlapiRequestURL("https://somelink.herokuapp.com/", json, {"Content-Type":"application/json"}); 

에게 Heroku 코드 :

app.use(cors()); 
app.use(bodyParser.urlencoded({extended: false})); 
app.use(bodyParser.json()); 

var server = app.listen(process.env.PORT || 8080, function() { 
    var port = server.address().port; 
    console.log('port #: ', port); 
}); 

app.post('/', function(req, res) { 
    console.log(JSON.stringify(req.headers)); 
     console.log(req.body); 
}); 

전체 오류 :

SyntaxError: Unexpected token p 
    at parse (/app/node_modules/body-parser/lib/types/json.js:83:15) 
    at invokeCallback (/app/node_modules/raw-body/index.js:262:16) 
    at /app/node_modules/body-parser/lib/read.js:116:18 
    at done (/app/node_modules/raw-body/index.js:251:7) 
    at IncomingMessage.onEnd (/app/node_modules/raw-body/index.js:307:7) 
    at emitNone (events.js:86:13) 
    at IncomingMessage.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:974:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

편집 : json으로 그 아래에 인쇄해야합니다. 이 우편 배달을 통해 작동하지만이 Netsuite의를 통해 전송되는 경우 :

{ 
    "par": { 
    "id": "customID", 
    "num": "132" 
    }, 
    "in": { 
    "headers": "Item,Current", 
    "val1": "98696,7938", 
    "val2": "58839,936" 
    } 
} 

UPDATE : 좀 더 테스트 후 나는 nlapiRequestURL()에서 헤더를 꺼내서 전송되는 정보는 JSON, 요청 기본값을하더라도 "content-type":"application/x-www-form-urlencoded; charset=UTF-8". 업데이트 요청은 다음과 같습니다 nlapiRequestURL("https://somelink.herokuapp.com/", json);

The Heroku POST request code now: 
    app.post('/', function(req, res) { 
    console.log(JSON.stringify(req.headers)); 
    console.log(JSON.stringify(req.body)); 
}); 

이는 JSON 그러나 형식이 잘못 전송합니다. 대신 내 편집에서로 표시해야 JSON의, 나는 아래 얻을 :

{ 
    "par": "{id=customID,num=132}", 
    "in": "{headers=Item,Current, val1=98696,7938, val2=58839,936}" 
} 
+0

'request.getParameter ("custpage_id")'..이 값은 무엇입니까? –

+0

@suraj 사용자가 입력 한 문자열 값입니다. 숫자는 숫자이고 id는 문자열입니다. JSON은 완벽하게 나옵니다 – VicDid

+0

JSON이 어떻게 생겼습니까? 그'console.log()'호출은 실제로 무엇을 출력합니까? – Pointy

답변

1

그것은 내가했다 할 필요가 무엇인지 밝혀 캐릭터 라인 화 내가 데이터를 전송하기 전에 내가 만든 JSON 객체입니다. 따라서 단지 nlapiRequestURL("https://somelink.herokuapp.com/", JSON.stringify(json)); 을 완벽하게 처리했습니다.