res.sendFile 絶対パス 質問する

res.sendFile 絶対パス 質問する

もし私が

res.sendfile('public/index1.html'); 

するとサーバーコンソールに警告が表示されます

expressは非推奨ですres.sendfileres.sendFile代わりに使用してください

しかし、クライアント側では正常に動作します。

しかし、これを

res.sendFile('public/index1.html');

エラーが発生します

TypeError: パスは絶対パスかルートパスを指定する必要がありますres.sendFile

レンダリングされませんindex1.html

絶対パスがわかりません。publicと同じレベルにディレクトリがあります。から をserver.js実行しています。 また、宣言しました。res.sendFileserver.jsapp.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 つの簡単な方法があります。

  1. res.sendFile(path.join(__dirname, '../public', 'index1.html'));
  2. res.sendFile('index1.html', { root: path.join(__dirname, '../public') });

注記: __dirnameは、現在実行中のスクリプトがあるディレクトリを返します。あなたの場合、server.jsは にあるようですapp/。したがって、 に到達するにはpublic、まず 1 レベル戻る必要があります: ../public/index1.html

注記: path組み込みモジュールですrequire上記のコードが機能するためには、次の操作を行う必要があります。var path = require('path');

おすすめ記事