我无法让我的 api 与我的快速服务器一起工作,我总是收到一个错误:
错误:未指定默认引擎且未提供扩展。
我很确定它来自快速路由器,但我找不到错误来自哪里......
我是否正确使用了快速路由器?因为我以前从未使用过它。
服务器.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;
Run Code Online (Sandbox Code Playgroud)
路线/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;
Run Code Online (Sandbox Code Playgroud)
Raj*_*gah 10
此错误是因为您使用的是 res.render。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')
});
Run Code Online (Sandbox Code Playgroud)
对于您的第二个问题,您必须像这样在 server.js 中将 bodyParser 放在顶部
app.use(bodyParser.json()); //here
app.use('/', api);
app.use(logger('dev'));
//app.use(bodyParser.json()); your old code
Run Code Online (Sandbox Code Playgroud)
小智 5
我有同样的错误。我忘记将以下语法添加到 server.js 文件中
//set default engine, and provide [handlebars as] extension
app.set('view engine', 'handlebars');Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27238 次 |
| 最近记录: |