Javascript Sails.js-通过express中间件为Sails路线提供服务

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

我有一个sails应用程序,与该应用程序相关的路由、静态资产都是从root提供的,而且运行良好。我想添加一个express中间件,以便可以在特定路径中为路由和静态资产提供服务

为了提供静态资产,我在config/http.js中的customMiddleware函数中使用了下面的

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操作。