2017-04-15 3 views
2

클라이언트 쪽 응용 프로그램이 base64 인코딩 이미지로 POST 요청을 보내려고하면 서버에서이 오류가 발생합니다.Express : readStream에서 오류

Error 
    at readStream (/Users/.../node_modules/raw-body/index.js:196:17) 
    at getRawBody (/Users/.../node_modules/raw-body/index.js:106:12) 
    at read (/Users/.../node_modules/body-parser/lib/read.js:76:3) 
    at jsonParser (/Users/.../node_modules/body-parser/lib/types/json.js:127:5) 
    at Layer.handle [as handle_request] (/Users/.../node_modules/express/lib/router/layer.js:95:5) 
    at trim_prefix (/Users/.../node_modules/express/lib/router/index.js:317:13) 
    at /Users/.../node_modules/express/lib/router/index.js:284:7 
    at Function.process_params (/Users/.../node_modules/express/lib/router/index.js:335:12) 
    at next (/Users/.../node_modules/express/lib/router/index.js:275:10) 
    at cors (/Users/.../node_modules/cors/lib/index.js:179:7) 
    at /Users/.../node_modules/cors/lib/index.js:229:17 
    at originCallback (/Users/.../node_modules/cors/lib/index.js:218:15) 
    at /Users/.../node_modules/cors/lib/index.js:223:13 
    at optionsCallback (/Users/.../node_modules/cors/lib/index.js:204:9) 
    at corsMiddleware (/Users/.../node_modules/cors/lib/index.js:209:7) 
    at Layer.handle [as handle_request] (/Users/.../node_modules/express/lib/router/layer.js:95:5) 

요청 본문을 doublecheck했습니다. base64 문자열의 형식이 잘못되었습니다. 앱이 base64 부분없이 동일한 요청을 보내는 경우 모든 문제가 해결됩니다.

server.js :

import http from 'http' 
import express from 'express' 
import cors from 'cors' 
import morgan from 'morgan' 
import bodyParser from 'body-parser' 
import api from './api' 
import config from './config' 

let app = express() 
app.server = http.createServer(app) 

// logger 
app.use(morgan('dev')) 

// 3rd party middleware 
app.use(cors({ 
    exposedHeaders: config.corsHeaders 
})) 

app.use(bodyParser.json({ 
    limit : config.bodyLimit 
})) 

app.use(express.static("./assets")) 

// api router 
app.use('/api', api) 

app.server.listen(process.env.PORT || config.port) 

console.log(`Started on port ${app.server.address().port}`) 

export default app 

api.js

import { Router } from 'express'; 
const router = Router(); 

router.post('/createPost', require('./methods/createPost').default) 

export default router 
+0

FWIW 동일한 문제가 발생했습니다. 아주 작은 테스트 본문으로 요청을 게시하면 성공적으로 처리되지만 요청 본문이 더 크면 (오디오 - 비디오 데이터) 위의 오류가 표시됩니다. – TonyM

답변

5

내가이 문제와 같은 생각 :

Error: request entity too large

바디 파서의 제한이 너무 낮게 설정되어 (기본값은 100k입니다). 한도가 설정에 설정되는 것처럼

app.use(bodyParser.json({limit: '50mb'})); 

것 같습니다 : 링크에서 솔루션에 설명 된대로 '50메가바이트'위 내 문제를 해결 : 내 경우

, 나는 한계를 설정하는 것을 발견했다.