通常、サーバーがどのように構造化されているかについての内部パスを外部に公開したくありません。できることは/scripts
、サーバーに静的ルートを作成して、ファイルが存在するディレクトリからファイルをフェッチすることです。つまり、ファイルがにある場合です"./node_modules/bootstrap/dist/"
。次に、ページのスクリプトタグは次のようになります。
<script src="/scripts/bootstrap.min.js"></script>
nodejsでExpressを使用していた場合、静的ルートは次のように簡単です。
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
次に、からのブラウザ要求/scripts/xxx.js
は、のdist
ディレクトリから自動的にフェッチされます__dirname + /node_modules/bootstrap/dist/xxx.js
。
注:NPMの新しいバージョンでは、ネストの深さが浅いため、最上位に多くのものが配置されているため、新しいバージョンのNPMを使用している場合、パス名はOPの質問および現在の回答に示されているものとは異なります。しかし、コンセプトは同じです。サーバードライブ上のファイルが物理的にどこにあるかがわかります。実際のサーバーファイルシステム構成をクライアントに公開しないように、これらのファイルへの疑似パスを作成するためにapp.use()
with express.static()
を作成します。
このような静的ルートを作成したくない場合は、Webサーバーが使用するパス、/scripts
または使用したいトップレベルの指定にパブリックスクリプトをコピーする方が良いでしょう。通常、このコピーをビルド/デプロイメントプロセスの一部にすることができます。
ディレクトリで特定のファイルを1つだけ公開し、そのディレクトリ内のすべてのファイルを公開する必要がない場合は、次のexpress.static()
ように使用するのではなく、ファイルごとに個別のルートを手動で作成できます。
<script src="/bootstrap.min.js"></script>
そしてそのためのルートを作成するコード
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
または、スクリプトのルートをさらに描きたい場合は /scripts
。
<script src="/scripts/bootstrap.min.js"></script>
そしてそのためのルートを作成するコード
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});