【问题标题】:How do I serve static files using Sails.js only in development environment?如何仅在开发环境中使用 Sails.js 提供静态文件?
【发布时间】:2016-12-15 12:56:47
【问题描述】:

在生产服务器上,我们使用 nginx 为 Sails.js 应用程序提供静态文件,但在开发环境中,我们希望 Sails 为我们提供静态文件。这将允许我们跳过 dev 机器上的 nginx 安装和配置。

我该怎么做?

【问题讨论】:

    标签: node.js sails.js assets middleware


    【解决方案1】:

    我将向您展示如何使用 Node.js/Express 的 serve-static 模块解决此问题。

    1)。首先安装开发环境模块:npm i -D serve-static.

    2)。在api/hooks 目录中创建serve-static 目录。

    3)。在之前创建的serve-static 目录中创建index.js 文件。

    4)。添加以下内容:

    module.exports = function serveStatic (sails) {
    
      let serveStaticHandler;
    
      if ('production' !== sails.config.environment) {
        // Only initializing the module in non-production environment.
        const serveStatic = require('serve-static');
        var staticFilePath = sails.config.appPath + '/.tmp/public';
        serveStaticHandler = serveStatic(staticFilePath);
        sails.log.info('Serving static files from: «%s»', staticFilePath);
      }
    
      // Adding middleware, make sure to enable it in your config.
      sails.config.http.middleware.serveStatic = function (req, res, next) {
        if (serveStaticHandler) {
          serveStaticHandler.apply(serveStaticHandler, arguments);
        } else {
          next();
        }
      };
    
    
      return {};
    
    };
    

    5)。编辑config/http.js文件,添加之前定义的中间件:

    module.exports.http = {
      middleware: {
        order: [
          'serveStatic',
          // ...
        ]
      }
    };
    

    6)。重新启动/运行您的应用程序,例如node ./app.js 并尝试获取其中一个静态文件。它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2012-03-25
      • 1970-01-01
      • 2018-10-11
      • 2018-06-04
      相关资源
      最近更新 更多