首页 文章

如何更改Sails JS中间件的默认配置

提问于
浏览
6

我试图改变Sails JS应用程序的设置,并且有点麻烦将参数传递给body-Parser以更改默认设置 .

我之前有过这里描述的问题:Posting larger files

我相信通过更改默认的'limit'选项已经正确回答了这个问题,因为100kb的默认大小减去了formData对象的33%开销,这与我能够/不能发送的文件大小非常一致 . 所以提出的解决方案是这样的:

var bodyParser = require('body-parser');
...
app.use(bodyParser.urlencoded( { limit: 1048576 } ));

但我无法在我的Sails应用程序中实现该解决方案 . 我已阅读Sails Documentation关于更改中间件设置,并在我的config / http.js文件中尝试了以下内容...

First attempt - wrapper

/**
 * 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

};

Second attempt - overwrite

/**
 * 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的文件?我假设我没有正确配置或其他东西覆盖我已经完成的 .

EDIT :我正在使用Sails版本> 12.0.X

2 回答

  • 0

    如果您使用的是Sails> v0.12.x:

    module.exports.http = {
    
          middleware: {
              // ... options
              bodyParser: require('skipper')({ limit: 1073741824 })
          }
    
        };
    

    对于风帆<v0.12.x:

    module.exports.http = {
    
            middleware: {
                order: [
                    // ... options
                    // 'bodyParser', <- remove bodyParser
                    'skipper', // <-- add skipper
                ],
                skipper: require('skipper')({ limit: 1073741824 })
            }
    
        };
    

    这是link to the documentation .

  • 0

    只是想知道你是否看过这个Sails GitHubIssue

    似乎非常相关,而且似乎很少有人使它发挥作用 .

相关问题