[解決済み] Express - エラーです。デフォルトエンジンが指定されておらず、拡張子も提供されていません。
2022-02-11 07:39:51
質問
Expressサーバーでapiを動作させることができず、常にエラーが発生します。
エラーです。デフォルトエンジンが指定されておらず、拡張子も提供されていません。
エクスプレスルーターからきているのは間違いないのですが、どこからエラーが出ているのかがわかりません...。
エクスプレスルーターの使い方は正しかったのでしょうか?今まで使ったことがないので。
server.jsを使用します。
const createError = require('http-errors');
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const api = require('./routes/api');
const app = express();
const MongoClient = require('mongodb').MongoClient;
const MONGODB_URI = process.env.MONGODB_URI;
const PORT = process.env.PORT || 5000;
app.use('/', api);
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
// Database object
var db;
// Initialize connection once with db
MongoClient.connect(MONGODB_URI, function(err, database) {
if(err) throw err;
db = database;
// Start the application after the database connection is ready
app.listen(PORT, () => console.log(`Server listening on port ${PORT}`));
});
module.exports = db;
module.exports = app;
routes/api.js。
// const app = require("../server");
var db = require("../server");
const { videos } = require("../helpers/videos");
const { videoLinksValidator } = require("../helpers/video-links-validator");
const { getTitleType } = require("../helpers/title-type-extractor");
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
console.log("RESPONSE", res)
});
// Create a GET route
router.get("/express_backend", (req, res) => {
res.send({ express: "YOUR EXPRESS BACKEND IS CONNECTED TO REACT" });
});
router.post("/video_url", async (req, res)=> {
const videoURL = req.body.videoURL.videoURL;
let titleType = await getTitleType(videoURL);
let videosAndTitle = await videos(videoURL, titleType);
let videoAndTitleReady = await videoLinksValidator(videosAndTitle);
console.log(videoAndTitleReady)
return res.send(videoAndTitleReady);
});
module.exports = router;
解決方法は?
res.renderはページをレンダリングしようとするので、そのためにjadeなどのビューエンジンを設定する必要があります。しかし、ここではその必要がないため、次のように変更します。
res.render
を
res.send
このように
これを試してみてください
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.send('error');//this or res.status(err.status || 500).send('error')
});
2番目の質問については、server.jsで次のようにbodyParserを一番上に持ってくる必要があります。
app.use(bodyParser.json()); //here
app.use('/', api);
app.use(logger('dev'));
//app.use(bodyParser.json()); your old code
関連
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] node.jsのセットアップウィザードが途中で終了してしまう
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】npx コマンドが見つかりません。
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] Express.js req.bodyが未定義です。