プロダクションサーバーでは、nginx
を使用してSails.jsアプリケーション用の静的ファイルを提供しますが、開発環境ではSailsに静的ファイルを提供したいと考えています。これにより、devのマシン上でnginxのインストールと設定をスキップすることができます。Sails.jsを使用して静的ファイルを開発環境でのみ提供するにはどうすればよいですか?
どうすればよいですか?
プロダクションサーバーでは、nginx
を使用してSails.jsアプリケーション用の静的ファイルを提供しますが、開発環境ではSailsに静的ファイルを提供したいと考えています。これにより、devのマシン上でnginxのインストールと設定をスキップすることができます。Sails.jsを使用して静的ファイルを開発環境でのみ提供するにはどうすればよいですか?
どうすればよいですか?
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
ファイルを編集し、以前に定義したミドルウェアを追加します。
6)。アプリケーションを再起動/実行します。 node ./app.js
と静的ファイルの1つを取得しようとします。それは動作するはずです。