app.js
var express = require('express');
var app = express();
var path = require('path');
var viewPath = path.join(__dirname, 'app/views');
app.set('views', viewPath);
app.set('view engine', 'jade');
app.get('/', function(req, res) {
res.render('index', { title: 'Home Page' } );
});
app.listen(3000);
app
└───views
│ └───index.jade
└───app.js
错误:无法在视图目录index
d:\Users\Admin\Documents\...\project\views
我想通过将视图文件放在app/views/*.jade
中来构建我的应用程序,但到目前为止我无法使用它,使用app.set('views', ...)
应该可以工作,但它不会
console.log(viewPath)
显示d:\Users\Admin\Documents\...\project\app\views
我也试过例如app.set('views', 'xxx')
但错误仍然停留在同一条路径上,似乎app.set()
从未被调用过,这里有什么问题?请指导。
由于
使用app.set('views', 'xxx')
设置的内容并不重要,错误始终是错误:无法在视图目录index
中查找视图d:\Users\Admin\Documents\...\project\views
(始终保持说明相同的路径)
我很抱歉router.get('/', ...)
,我的实际项目文件不同,所以我在这里犯了错误
答案 0 :(得分:6)
尝试使用
app.set('views', path.join(__dirname, 'views'));
您的app.js
位于app
文件夹中,因此我认为
var viewPath = path.join(__dirname, 'app/views');
app.set('views', viewPath);
由于app/app/views/
会调查app/views/
而不是__dirname
__dirname
是当前正在执行的脚本所在的目录。
答案 1 :(得分:0)
如Roxinagi所述,您应该使用app.get()。 其他一切似乎都很好
app.get('/', function(req, res) {
res.render('index', { title: 'Home Page' } );
});
答案 2 :(得分:0)
我实际上已在项目中分隔了文件,因此我在分隔的路径文件中有app.get('/', ...)
,然后要求它与app.use()
一起使用
我真的没有任何想法,但在仅将app.get('/', ...)
移至app.js
之后,问题已经解决了
谢谢大家
答案 3 :(得分:0)
我知道为时已晚,但可能会帮助遇到相同问题的人。如果将渲染代码放在单独的文件中,则需要使用express.Router
而不是app.get
。例如,
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.render('index', {title: 'Hey', message: 'Hello there!'});
});
module.exports = router;
然后在您的app.js
中
const router = require('./app/routes/routerName');
app.use('/', router);
答案 4 :(得分:0)
const path = require('path')
app.set('views', path.join(__dirname, 'app/views/'))
app.set('view engine','jade');