gpt4 book ai didi

node.js - 在 Sails.js 中使用 express 中间件来提供静态文件

转载 作者:搜寻专家 更新时间:2023-11-01 00:18:00 24 4
gpt4 key购买 nike

我在 sails 0.11.0 上使用 express 中间件时遇到问题。我在 http.js 文件中尝试了以下内容。

module.exports.http = {

customMiddleware: function (app) {
console.log("middleware");
app.use('/test', express.static('****/****/*****/testProject/api/controllers' + '/public/'));
}

};

但它不起作用,我遗漏了一些东西。

最佳答案

使用最新的 Sails (0.12),无法直接从 config/http.js(或作为策略),因为自定义中间件函数参数从 function (app) 更改为 function (req, res, next)。这可能就是为什么这里的一些答案不适用于 Sails 0.12 的原因。

Sails 文档和迁移指南中未明确提及此更改,但查看 Express documentation ,我们看到 app.use(...) 可以接受单个 function (req, res, next) 参数...所以我的猜测是分配参数app.use(...) 作为 config/http.js 中的自定义中间件,就像这样(以 connect-history-api-fallback 为例):

// config/http.js
var history = require('connect-history-api-fallback');

module.exports.http = {
middleware: {
order: [
'startRequestTimer',
'cookieParser',
'session',
'myRequestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'connectHistoryApiFallback', // <==
'www',
'favicon',
'404',
'500'
],
},

// Do this instead of app.use(history())
connectHistoryApiFallback: history()
}

瞧,它就像一个魅力!

TL;DR 从 Sails 0.12 开始,config/http.js 中定义的自定义中间件应该是 function (req, res, next) 而不是 function (app),所以不要调用 app.use(someMiddleware),您应该将 someMiddleware 直接放在 sails.config.http.middleware.order.

关于node.js - 在 Sails.js 中使用 express 中间件来提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29078276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com