[英]Error: Failed to lookup view "error" in views directory
I have this error in my express.js project:我的 express.js 项目中有这个错误:
Error: Failed to lookup view "error" in views directory
I would like to redirect by a route into an html page.我想通过路由重定向到 html 页面。
I create a form that send to the route inserToDB a name and a surname.我创建了一个向路由inserToDB发送姓名和姓氏的表单。 I would like to redirect in the profile.ejs page but i find always this error.
我想在profile.ejs页面中重定向,但我总是发现这个错误。
I don't understand the reason.我不明白原因。 So i'll post my code in the hope that you can help me..
所以我会发布我的代码,希望你能帮助我..
app.js应用程序.js
var routes = require('./routes/routes');
var users = require('./routes/users');
var app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// view engine setup
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use('/', routes);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
route.js路由.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
console.log("index.ejs è caricata!");
res.render('index.ejs');
});
router.get('/profile', function(req, res) {
console.log("Ok ci siamo: profile caricata!");
res.render('profile.ejs');
});
router.get('/insertToDB', function(req, res) {
console.log(req.query.name + req.query.surname);
res.redirect("/profile");
});
module.exports = router;
index.ejs索引.ejs
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
Ciao loschi!
Inserisci i tuoi dati
<div>
Nome <input type="text" name="name" id="name"></input>
<br>
Cognome<input type="text" name="surname" id="surname"></input>
<br>
<input type="submit" name="Invia" id="enter"></input>
<script type="text/javascript" src="js/action.js"></script>
</div>
</body>
</html>
action.js动作.js
$("#enter").on("click", function(){
var name = $("#name").val();
var surname = $("#surname").val();
$.ajax({
type: "get",
url: "/insertToDB",
data:"name=" + name +"&surname="+ surname,
async:"true"
});
});
Try to change your engine setup in app.js
to:尝试将
app.js
的引擎设置更改为:
// view engine setup
app.engine('html', require('ejs').renderFile);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
Then change your error handler in app.js
to:然后将
app.js
的错误处理程序更改为:
// 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.ejs');
});
And don't forget to create a .ejs
file called error.ejs
in the views directory.并且不要忘记在视图目录中创建一个名为
error.ejs
的.ejs
文件。 This should fix the error.这应该修复错误。
--pls 保存文件夹名称视图到视图
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.