Javascript Sails.js-通过express中间件为Sails路线提供服务
我有一个sails应用程序,与该应用程序相关的路由、静态资产都是从root提供的,而且运行良好。我想添加一个express中间件,以便可以在特定路径中为路由和静态资产提供服务 为了提供静态资产,我在config/http.js中的customMiddleware函数中使用了下面的Javascript Sails.js-通过express中间件为Sails路线提供服务,javascript,express,routes,sails.js,Javascript,Express,Routes,Sails.js,我有一个sails应用程序,与该应用程序相关的路由、静态资产都是从root提供的,而且运行良好。我想添加一个express中间件,以便可以在特定路径中为路由和静态资产提供服务 为了提供静态资产,我在config/http.js中的customMiddleware函数中使用了下面的 app.use('/my/new/path', express.static(path.join(__dirname, '../client', 'dist'))); 有了上述功能,我可以从根目录和/my/new/p
app.use('/my/new/path', express.static(path.join(__dirname, '../client', 'dist')));
有了上述功能,我可以从根目录和/my/new/path加载静态文件
现在,当谈到路由时,我不确定如何使用app.use通过express中间件处理要加载的sails路由,例如,在我的config/routes-client.js中,主路由默认为“/”,而不是在那里更改路由,我想使用下面我们通常用于典型node/express应用程序的东西
app.use('/my/new/path', routes); --> where routes is my server routes
有没有办法添加一个express中间件来为特定路径上的sails路线提供服务?我就是这样做的
在http.js内部
var express = require('express');
module.exports.http = {
customMiddleware: function (app) {
app.use('/docs', express.static(path.join(sails.config.appPath, '/docs')));
},
... rest of the http.js code...
}
当然,在这个示例中,我在route/docs上从我的应用程序的根目录中为docs文件夹提供即时消息服务。。。您将添加APT到您的逻辑…我不确定您为什么希望将前缀自动添加到自定义路由中,而不是直接将前缀添加到config/routes.js或config-routes-client.js文件中的路由中,但是:
// config/http.js
middleware: {
reroute: function (req, res, next) {
// Set the prefix you want for routes.
var prefix = '/foo/bar';
// Create a regex that looks for the prefix in the requested URL.
var regex = new RegExp('^' + prefix + '(/|$)');
// If the prefix is found, replace it with /
if (req.url.match(regex)) {
req.url = req.url.replace(regex, '/');
}
// Continue processing the request.
return next();
}
}
确保在config/http.js中向middleware.order数组添加了重路由。顺便说一句,这也会处理静态文件。检查OP是否已经覆盖了静态路由;他们特别询问如何将路径前缀添加到非静态路由,即Sails操作。