在Express.js中设置默认视图路径 源代码
app.js 文件夹结构 浏览器中的错误 错误:无法在视图目录在Express.js中设置默认视图路径 源代码,express,view,Express,View,app.js 文件夹结构 浏览器中的错误 错误:无法在视图目录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'
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')
设置什么并不重要,错误总是错误的:无法在视图目录d:\Users\Admin\Documents\…\project\views
中查找视图索引
(始终使用相同的路径)
我对路由器感到非常抱歉。获取(“/”,…),实际上我的项目的文件是不同的,所以我在这里犯了错误尝试使用
app.set('views',path.join('views');
你的app.js
在你的app
文件夹中,所以我想
var viewPath=path.join(uu dirname,'app/views');
应用程序集(“视图”,视图路径);
将查看app/app/views/
而不是app/views/
,因为\uu dirname
\uuu dirname
是当前正在执行的脚本所在的目录。正如Roxinagi所提到的,您应该使用app.get()。
其他一切似乎都很好
app.get('/', function(req, res) {
res.render('index', { title: 'Home Page' } );
});
实际上,我的项目中有分离的文件,因此在分离的路由文件中有
app.get('/',…)
,然后要求它与app.use()一起使用
我真的不知道,但是在将app.get('/',…)
移动到app.js
之后,问题就解决了
谢谢大家我知道为时已晚,但可能会帮助有同样问题的人。如果将渲染代码放在单独的文件中,则需要使用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);
我的app.js
不在app
文件夹内,谢谢,您键入了router.get
而不是app.get
,或者您没有定义router
,请添加一些解释
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.render('index', {title: 'Hey', message: 'Hello there!'});
});
module.exports = router;
const router = require('./app/routes/routerName');
app.use('/', router);
const path = require('path')
app.set('views', path.join(__dirname, 'app/views/'))
app.set('view engine','jade');