2016-11-11 3 views
0

돛 버전 0.10.5를 사용하고 있습니다. 나는 bodyParser는 http.js 년과 같이 설정이 있습니다맞춤 스키퍼 본문 파서 구성을 사용하는 중에 오류가 발생했습니다.

bodyParser: require('skipper')({ 
    limit: 52428800 
}) 

그리고 서버를 시작할 때이 오류가 점점 계속 :

error: TypeError: Cannot read property 'toLowerCase' of undefined 
    at _parseHTTPBody (/var/www/testapp-backend/node_modules/skipper/index.js:49:19) 
    at /var/www/testapp-backend/node_modules/sails/lib/hooks/http/middleware/defaults.js:104:28 
    at module.exports (/var/www/testapp-backend/node_modules/sails/lib/hooks/http/middleware/defaults.js:144:7) 
    at loadExpress (/var/www/testapp-backend/node_modules/sails/lib/hooks/http/initialize.js:103:65) 
    at /var/www/testapp-backend/node_modules/sails/lib/hooks/http/index.js:190:18 
    at /var/www/testapp-backend/node_modules/sails/lib/app/private/after.js:91:14 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:232:13 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:119:25 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:24:16 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:229:17 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:516:34 
    at handlerFn (/var/www/testapp-backend/node_modules/sails/lib/app/private/after.js:78:13) 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:511:21 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:227:13 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:111:13 
    at Array.forEach (native) 
    at _each (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:32:24) 
    at async.each (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:110:9) 
    at _asyncMap (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:226:9) 
    at Object.map (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:204:23) 
    at _parallel (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:509:20) 
    at Object.async.parallel (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:539:9) 
    at Sails.emitter.after (/var/www/testapp-backend/node_modules/sails/lib/app/private/after.js:89:11) 
    at Hook.initialize (/var/www/testapp-backend/node_modules/sails/lib/hooks/http/index.js:189:15) 
    at Hook.bound [as initialize] (/var/www/testapp-backend/node_modules/lodash/dist/lodash.js:729:21) 
    at /var/www/testapp-backend/node_modules/sails/lib/hooks/index.js:132:16 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:425:17 
    at /var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:419:17 
    at Array.forEach (native) 
    at _each (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:32:24) 
    at Immediate.taskComplete (/var/www/testapp-backend/node_modules/sails/node_modules/async/lib/async.js:418:13) 
    at processImmediate [as _immediateCallback] (timers.js:367:17) [TypeError: Cannot read property 'toLowerCase' of undefined] 

error: Encountered an error when trying to use configured bodyParser. 
error: Usually, this means that it was installed incorrectly. 
error: A custom bodyParser can be configured without calling the wrapper function- e.g.: 
``` 
bodyParser: require("connect-busboy") 
``` 
error: Alternatively, if you need to provide options: 
``` 
bodyParser: { 
fn: require("connect-busboy"), 
options: {/* ... */} 
} 
``` 

후이 오류가 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 나는 오류의 지시에 따라 시도했지만 선장과 나는 단지 몇 MB보다 큰 S3에 파일을 업로드 할 수 없습니다. 나는 이것을 시도하고 작동하지 않습니다 :

bodyParser: { 
fn: require("skipper"), 
options: {limit: 52428800} 
} 

위의 메시지와 같습니다.

+0

(https://github.com/balderdashy/skipper/issues/157 참조 : 가장 쉬운 해결책은 다른 사용자 정의 미들웨어 이름으로 미들웨어 위해 bodyParser를 대체하고 대신 예 : 것을 구성하는 것입니다) – mikermcneil

답변

2

Sails < 0.12의 기본 bodyParser 설정의 버그로 인해 미들웨어를 구성하는 일반적인 방법이 작동하지 않습니다.

module.exports.http = { 

    middleware: { 

    // The order in which middleware should be run for HTTP request. 
    // (the Sails router is invoked by the "router" middleware below.) 
    order: [ 
     'startRequestTimer', 
     'cookieParser', 
     'session', 
     // 'bodyParser', // <-- don't add the "bodyParser" middleware to the stack 
     'skipper', // <-- instead use this "custom" middleware 
     'handleBodyParserError', 
     'compress', 
     'methodOverride', 
     'poweredBy', 
     '$custom', 
     'router', 
     'www', 
     'favicon', 
     '404', 
     '500' 
    ], 

    // Configure Skipper 
    skipper: require('skipper')({ 
     limit: 52428800 
    }) 

    } 
}