1. ホーム
  2. node.js

[解決済み] res.sendFile 絶対パス

2022-03-15 12:52:28

質問

を実行すると

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

というサーバーコンソールの警告が表示されます。

express deprecated 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を使用しています。

解決方法を教えてください。

その 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.jsapp/ . ということは public ということで、まず一階層分戻る必要があります。 ../public/index1.html .

path は組み込みモジュール である必要があります。 require 上記のコードを動作させるためには var path = require('path');