【发布时间】:2016-12-15 12:56:47
【问题描述】:
在生产服务器上,我们使用 nginx 为 Sails.js 应用程序提供静态文件,但在开发环境中,我们希望 Sails 为我们提供静态文件。这将允许我们跳过 dev 机器上的 nginx 安装和配置。
我该怎么做?
【问题讨论】:
标签: node.js sails.js assets middleware
在生产服务器上,我们使用 nginx 为 Sails.js 应用程序提供静态文件,但在开发环境中,我们希望 Sails 为我们提供静态文件。这将允许我们跳过 dev 机器上的 nginx 安装和配置。
我该怎么做?
【问题讨论】:
标签: node.js sails.js assets middleware
我将向您展示如何使用 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 并尝试获取其中一个静态文件。它应该可以工作。
【讨论】: