express 路由无法访问二级目录

1、问题描述:
初学express,首次配置,发现路由无法设置访问到views的二级目录。

2、代码:
index.js

var express = require('express');
var router = express.Router();

var title = 'xxxxx';

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { title: title});
});

router.get('/dna', function(req, res, next) {
    res.render('pages/dna', { title: title});
});


module.exports = router;

app.js

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

var app = express();

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


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')));
// app.use(express.static(path.join(__dirname, 'views')));

app.use('/', routes);

3、报错信息

GET /dna 500 476.011 ms - 1214
Error: Failed to lookup view "error" in views directory "xxxxxxx"                                                                                                                                                                                                                       
    at EventEmitter.render (xxxxxxxxxxxxx\node_modules\express\lib\application.js:579:17)                                                                                                                                                                                                           
    at ServerResponse.render (xxxxxxxxxxxxxxxxxxxxxxxx:961:7)                                                                                                                                                                                                             
    at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\app.js:52:7                           

4、目录结构

clipboard.png

阅读 5.5k
3 个回答

问题找到了,我先加了一个error.jade文件,然后输出了异常消息,发现其实是视图报错,里面include的文件找不到,所以报错了,贴一下视图文件吧

doctype html
html

head
    include ../layout/_mate

body
    include ../layout/_lteie9
    include ../layout/_header.html
    include dna.html
    include ../layout/_footer.html

因为之前没有加../,原来访问是基于视图的相对路径来访问的

@silenceboy @Ull

这个不是找不到的问题,是你views目录里边要有一个error.jade的视图文件

路由设置了吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题