简体   繁体   English

Node.js:无法在视图目录中查找视图“错误”

[英]Nodejs: Failed to lookup view “error” in views directory

I am currently working on an angular website running express on a nodejs server. 我目前正在一个在nodejs服务器上运行express的有角度的网站上工作。 It usually loads up perfectly when I start running it on localhost but just yesterday it suddenly started throwing this error. 当我开始在localhost上运行时,它通常可以完美加载,但就在昨天,它突然开始抛出此错误。

GET / 500 3.467 ms - 1595
Error: Failed to lookup view "error" in views directory "C:\node\nodetest1\routes\views"
    at EventEmitter.render (C:\node\nodetest1\node_modules\express\lib\application.js:579:17)
    at ServerResponse.render (C:\node\nodetest1\node_modules\express\lib\response.js:960:7)
    at C:\node\nodetest1\server.js:63:7
    at Layer.handle_error (C:\node\nodetest1\node_modules\express\lib\router\layer.js:71:5)
    at trim_prefix (C:\node\nodetest1\node_modules\express\lib\router\index.js:310:13)
    at C:\node\nodetest1\node_modules\express\lib\router\index.js:280:7
    at Function.process_params (C:\node\nodetest1\node_modules\express\lib\router\index.js:330:12)
    at next (C:\node\nodetest1\node_modules\express\lib\router\index.js:271:10)
    at Layer.handle_error (C:\node\nodetest1\node_modules\express\lib\router\layer.js:67:12)
    at trim_prefix (C:\node\nodetest1\node_modules\express\lib\router\index.js:310:13)
    at C:\node\nodetest1\node_modules\express\lib\router\index.js:280:7
    at Function.process_params (C:\node\nodetest1\node_modules\express\lib\router\index.js:330:12)
    at Immediate.next (C:\node\nodetest1\node_modules\express\lib\router\index.js:271:10)
    at Immediate.<anonymous> (C:\node\nodetest1\node_modules\express\lib\router\index.js:618:15)
    at runCallback (timers.js:674:20)
    at tryOnImmediate (timers.js:645:5)

Here is my site directory tree: 这是我的站点目录树:
nodetest1 nodetest1
bin 箱子
routes 路线
libs
partials 谐音
views 意见
server.js server.js
package.json 的package.json

I've been stuck on this for a day now and would really appreciate some help. 我已经坚持了一天,非常感谢您的帮助。 Thanks! 谢谢!

Edit: Heres my server code below. 编辑:这是我的服务器代码如下。

    var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

//This connects the Mongo DB
//var mongo = require('mongodb');
//var monk = require('monk');
//var db = monk('localhost:27017/appointment');

mongoose.connect('mongodb://localhost:27017/appointment');



var app = express();

var index = require('./routes/index');
var users = require('./routes/users');

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('ejs', require('ejs').renderFile);
app.set('view engine', 'ejs');


app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'routes')));

//Actually uses the mongodb
//app.use(function(req,res,next){
    //req.db = db;
    //next();
//});




app.use('/', index);
app.use('/users', users);
app.use('/api', require('./routes/api/appointment/'));


// 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 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');
});

module.exports = app;

The problem: 问题:

res.render('error');

You don't have file error.ejs in views directory 您在views目录中没有文件error.ejs

In your directory structure, 在您的目录结构中,

views is placed inside of routes directory. views放置在routes目录中。

Either you have to place it outside of routes directory or 您必须将其放置在routes目录之外,或者

define views path like this. 这样定义视图路径。

app.set('views', path.join(__dirname, 'routes/views'));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM