もし私が
res.sendfile('public/index1.html');
するとサーバーコンソールに警告が表示されます
expressは非推奨です
res.sendfile
。res.sendFile
代わりに使用してください
しかし、クライアント側では正常に動作します。
しかし、これを
res.sendFile('public/index1.html');
エラーが発生します
TypeError: パスは絶対パスかルートパスを指定する必要があります
res.sendFile
レンダリングされませんindex1.html
。
絶対パスがわかりません。public
と同じレベルにディレクトリがあります。から をserver.js
実行しています。 また、宣言しました。res.sendFile
server.js
app.use(express.static(path.join(__dirname, 'public')));
ディレクトリ構造を追加します:
/Users/sj/test/
....app/
........models/
....public/
........index1.html
ここで指定する絶対パスは何ですか?
Express 4.x を使用しています。
ベストアンサー1
ミドルウェアexpress.static
は とは別のものであるres.sendFile
ため、ディレクトリへの絶対パスで初期化してもpublic
には何も起こりませんres.sendFile
。 では絶対パスを直接使用する必要がありますres.sendFile
。これを行うには、次の 2 つの簡単な方法があります。
res.sendFile(path.join(__dirname, '../public', 'index1.html'));
res.sendFile('index1.html', { root: path.join(__dirname, '../public') });
注記: __dirname
は、現在実行中のスクリプトがあるディレクトリを返します。あなたの場合、server.js
は にあるようですapp/
。したがって、 に到達するにはpublic
、まず 1 レベル戻る必要があります: ../public/index1.html
。
注記: path
組み込みモジュールですrequire
上記のコードが機能するためには、次の操作を行う必要があります。var path = require('path');