【发布时间】:2018-12-26 02:53:15
【问题描述】:
我正在尝试更改 Sails JS 应用程序的设置,并且有点麻烦将参数传递给 body-Parser 以更改默认设置。
我之前遇到过这里描述的问题:Posting larger files
我相信通过更改默认的“限制”选项已经正确回答了这个问题,因为 100kb 的默认大小减去来自 formData 对象的 33% 开销与我可以/不能发送的文件大小非常一致。所以提出的解决方案是这样的:
var bodyParser = require('body-parser');
...
app.use(bodyParser.urlencoded( { limit: 1048576 } ));
但我无法在我的 Sails 应用中实施该解决方案。我已经阅读了Sails Documentation 关于更改中间件设置的内容,并在我的 config/http.js 文件中尝试了以下操作...
第一次尝试 - 包装器
/**
* HTTP Server Settings
* (sails.config.http)
*/
module.exports.http = {
middleware: {
order: [
'startRequestTimer',
'cookieParser',
'session',
'refreshSessionCookie',
'bodyParserInit',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'requestLogger',
'router',
'www',
'favicon',
'404',
'500'
],
bodyParserInit : (function (){
let bodyParser = require('body-parser');
return bodyParser( { extended: true, limit: 1073741824 } )
})(),
)
},
// cache: 31557600000
};
第二次尝试 - 覆盖
/**
* HTTP Server Settings
* (sails.config.http)
*/
module.exports.http = {
middleware: {
order: [
'startRequestTimer',
'cookieParser',
'session',
'refreshSessionCookie',
//'bodyParserInit',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'requestLogger',
'router',
'www',
'favicon',
'404',
'500'
],
bodyParser: (function _configureBodyParser(){
let skipper = require('skipper');
let middlewareFn = skipper({
limit: 1073741824,
});
return middlewareFn;
})(),
)
},
// cache: 31557600000
};
但是,这两种尝试都没有解决我的问题,因为无论我做了什么,限制似乎仍然设置为 100kb。如何正确实现这一点,以便正文解析器接受最大 50kb 的文件?我认为要么我没有正确配置它,要么其他东西覆盖了我所做的。
编辑:我使用的是 Sails 版本 > 12.0.X
【问题讨论】:
-
您看过 Skipper 的常见问题解答了吗? github.com/balderdashy/…
-
是的,它暗示了与我尝试过的类似的东西。
标签: javascript node.js sails.js middleware body-parser