2016-12-15 10 views
1

На производственных серверах мы используем nginx для обслуживания статических файлов для нашего приложения Sails.js, однако в среде разработки мы хотим, чтобы Sails обслуживали статические файлы для нас. Это позволит нам пропустить установку и настройку nginx на машинах dev.Как обслуживать статические файлы с помощью Sails.js только в среде разработки?

Как это сделать?

ответ

0

Я собираюсь показать вам, как вы можете это решить, используя модуль serve-static для Node.js/Express.

1). Прежде всего установите модуль для среды разработки: npm i -D serve-static.

2). Создать serve-static каталог в каталоге api/hooks.

3). Создайте файл index.js в каталоге serve-static, созданном ранее.

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 и попытайтесь извлечь один из статических файлов. Он должен работать.