【问题标题】:How to change the default configuration of Sails JS middleware如何更改 Sails JS 中间件的默认配置
【发布时间】: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


【解决方案1】:

如果您使用的是 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。

【讨论】:

  • 感谢您的回复。我已阅读文档,您的回答与我的第二次尝试非常相似。你写的我又试了,还是不行,我还是只能上传100kb以下的文件。
【解决方案2】:

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

似乎非常相关,而且似乎很少有人使它起作用。

【讨论】:

  • 您好,感谢您的回答。我已经看过这个,并尝试了在该线程上发布的各种解决方案,但以上似乎都不适合我。我确实设法复制了他们的一些错误,但没有按预期工作。
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 2010-10-23
  • 2013-12-16
  • 2013-10-07
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多