[解決済み] Express.jsで「パスは絶対かres.sendFileにルートを指定しなければならない」エラーが発生する。
2022-02-06 15:15:21
質問
注:これは重複した質問ではありません。同様の質問に対する他の回答はすでに試しています。
htmlファイルをレンダリングしようとしている(Angular)のですが、問題があります。 これは動作します。
app.get('/randomlink', function(req, res) {
res.sendFile( __dirname + "/views/" + "test2.html" );
});
しかし、dirnameのようなものを何度もコピペするのは嫌なので、URLの繰り返しにならないようにするために、このような方法を試してみました。
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'views')));
app.get('/randomlink', function(req, res) {
res.sendFile('test2.html'); // test2.html exists in the views folder
});
以下はそのエラーです。
私のexpressのバージョンは4.13です
パスは絶対パスか、res.sendFileにルートを指定する必要があります。
解決方法は?
の公式ドキュメントに反することはできません。 res.sendFile()
オプション・オブジェクトにルート・オプションが設定されていない限り、path はファイルへの絶対パスでなければなりません。
しかし、次のようなものをコピーしたくないというのは理解できます。
__dirname
そのため、あなたの目的には、独自のミドルウェアを定義することができると思います。
function sendViewMiddleware(req, res, next) {
res.sendView = function(view) {
return res.sendFile(__dirname + "/views/" + view);
}
next();
}
その後、このミドルウェアを次のように簡単に使用することができます。
app.use(sendViewMiddleware);
app.get('/randomlink', function(req, res) {
res.sendView('test2.html');
});
関連
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み] bodyParser は非推奨です express 4
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?
-
[解決済み] res.sendFile 絶対パス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】MongoDBでコレクションを日付で並べ替えるには?
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] エラーです。Cannot find module 'ejs'