インストール済みhttp-server
グローバル。
myDirからlocalhostポート8080で起動します。myDirでindex.html
。
(ブラウザから)リクエストした場合http://localhost:8080/
index.htmlを取得しましたが、これで問題ありません。
私がリクエストした場合http://localhost:8080/anything
サーバーから応答がありません。
それとは対照的に、私のサーバーは、ポート8080のlocalhostに到達するすべてのhttpリクエストに対して、常にindex.htmlで応答します。
これは可能ですか?.
前もって感謝します
あなたが求めていることを達成するために、http-serverの代わりに live-server をお勧めします。
live-server --port=8080 --entry-file=./index.html
ライブサーバーもホットリロードを提供していますが、それはあなたのリクエストの1つではありませんでした
編集:live-serverは、本番環境で使用するように設計されていません。たとえばgzip圧縮なし
編集2:http-serverのメンテナーは明確に言った このコメントで 決して、http-serverはSPAのユースケースを考慮しない
編集3: serve も良いオプションのようです
Express 4.x を使用したシンプルでわかりやすい例:
var express = require('express');
var app = express();
var path = __dirname + '/public';
var port = 8080;
app.use(express.static(path));
app.get('*', function(req, res) {
res.sendFile(path + '/index.html');
});
app.listen(port);
この実装は、要求されたファイルが見つからない場合は常にindex.html
で応答します。また、このオプションがないhttp-server
を使用するのとほぼ同じくらい簡単です。
はい、あります。-P
/--proxy
オプション:
http-server -P http://localhost:8080/
anyエラー(404を含む)は、パスが欠落しているだけでなく、インデックスにリダイレクトされることに注意してください。
このような特定のケースでは、独自のサーバーを作成するのは簡単です。
'use strict';
var Host = '127.0.0.1', port = 3333;
var path = require('path');
var app = require('express')();
app.get('*', (req, res) => res.sendFile(path.join(__dirname, 'index.html')));
app.listen(port, () => console.log(`Listening on http://${Host}:${port}/`));
ただし、すべてのパスがindex.html
を返す場合、index.html
では画像、スタイルシート、クライアント側のJavaScriptファイルなどを参照できないことに注意してください。上記のコードだけでなく、すべてのリクエストに同じ応答(index.html
)を送信するソリューションを使用します。
あなたはいくつかの例外を作る必要があるかもしれません、そしてそれはExpressで難しくありません:
'use strict';
var Host = '127.0.0.1', port = 3333;
var path = require('path');
var app = require('express')();
app.get('/x.png', (req, res) => res.sendFile(path.join(__dirname, 'x.png')));
app.get('*', (req, res) => res.sendFile(path.join(__dirname, 'index.html')));
app.listen(port, () => console.log(`Listening on http://${Host}:${port}/`));
最初に一致したルートが特定のリクエストに使用されるため、例外は先頭に移動する必要があることに注意してください。
もちろん、このコードを保存する必要があります。 app.js
に、Expressをインストールします。
npm install express
そしてそれから始めます:
node app.js
これは、既成のソリューションを使用するよりも複雑です(ご覧のとおり、それほど複雑ではありません)が、正確に動作させる方法には、はるかに柔軟性があります。ロギングなどを追加するのも簡単です。