2017-09-13 9 views
0

아래는 그때 app.post(..)이 경로의 중단을 미들웨어 jsonParser를 사용하고 내가 할 경우 내가 req.bodyreq.body는

정의되지 않은 얻고 내 코드

import { createProxyServer } from 'http-proxy'; 
import BodyParser from 'body-parser'; 

const jsonParser = BodyParser.json(); 
const proxy = createProxyServer({ 
    target: 'http://127.0.0.1:7800', 
    proxyTimeout: 1000, 
}); 

app.use('/api', (req, res) => { 
    proxy.web(req, res); 
}); 

proxy.on('proxyRes', (proxyRes, req, res) => { 

    proxyRes.on('data', (dataBuffer) => { 
    console.log('req.body ', req.body); 
    const data = dataBuffer.toString('utf8'); 
    console.log(data); 
    }); 

}); 

'proxyRes'는 정의되지 않은 이유 프런트 엔드에서 시간 초과 오류가 발생했습니다. 코드는 다음과 같습니다.

app.use('/api', jsonParser, (req, res) => { 
    proxy.web(req, res); 
}); 

는 좀 청소 후 때 res.statusCode !== 200

+0

코드에서 몇 가지 사항을 수정하고 문제가 지속되면 알려주십시오. 먼저 여분의'}'구문 오류를 제거하십시오.'target' 옵션은 그 프로토콜을 알아야하기 때문에 다음과 같이 시도하십시오 :'http : //127.0.0.1 : 7800' 이것이 잘 작동하더라도, 코드는 req.body가 존재하지 않는 문맥에 있습니다. –

+0

@DanielAristizabal 고마워요, 문법 수정을했습니다. –

답변

0

코드의 최대 응답 & 요청의 로그를 확인하려면 (제거 } 추가, 중복 행을 제거) 내가 확실하지, 일부 실행 가능한 코드를 얻을 수 있었다 이것이 당신이 찾고있는 것입니다. 나는이 도움을 바랍니다.

const proxy = createProxyServer({ 
    target: 'http://127.0.0.1:7800', 
    proxyTimeout: 1000, 
}); 

app.use(BodyParser()) 

app.use('/api', (req, res) => { 
    proxy.on('proxyRes', (proxyRes) => { 
    proxyRes.on('data', (dataBuffer) => { 
     console.log('req.body ', req.body); 
     const data = dataBuffer.toString('utf8'); 
     console.log(data); 
    }); 
    }); 
    proxy.web(req, res); 
}); 
+0

Daniel에게 감사하지만 위의 코드는 동일한 출력 (undefined)을 제공하고 app.use (BodyParse())는 실제로 경로를 끊습니다. 프런트 엔드에서 모든 api가 시간 초과 됨 –

+0

문제는 버전 미스 매치가 될 수 있다고 생각합니다. 익스프레스와 사용 된 본문 파싱 플러그인 사이의 버전 호환성을 확인하십시오. 중단은 미들웨어 체인에서'next()'를 호출하지 않아 발생합니다. 본문 파싱 플러그인의 문서를 다른 방법으로 다시 호출해야합니다. 당신이/api에 대한 POST 데이터가'req.body'에 나타나야하고 프록시 응답이'data'에 보여야합니다. –