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

时间:2018-07-18 08:57:47

标签: javascript node.js sails.js middleware body-parser

我正在尝试更改Sails JS应用程序的设置,并且有些麻烦地将参数传递给主体解析器以更改默认设置。

我以前遇到过此处描述的问题:Posting larger files

我相信可以通过更改默认的'limit'选项来正确解决此问题,因为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

2 个答案:

答案 0 :(得分:0)

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

    module.exports.http = {

      middleware: {
          // ... options
          bodyParser: require('skipper')({ limit: 1073741824 })
      }

    };

对于帆

    module.exports.http = {

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

    };

这里是link to the documentation

答案 1 :(得分:0)

想知道您是否看过这个Sails GitHubIssue

似乎非常相关,从看起来很少有人能使它起作用。