更新了Server.js
代码:
/Server.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.set('view engine', 'vash');
app.set('views', path.join( __dirname, '/views') );
app.use(express.static(__dirname + "/public"));
app.set('views', path.join(__dirname, 'views'));
var indexRoutes = require('./routes/index')
app.use('/', indexRoutes);
app.use(bodyParser.json());
app.listen(3000);
console.log("yep >>> Server running on port 3000");
我仍然没有找到相同的错误
END UPDATE
我尝试在nodejs中设置路由并且能够显示index.html页面,但是当我点击关于链接时,我得到以下错误: 错误:
错误:无法查找视图"关于"在views目录中 " C:\的NodeJS \视图"在EventEmitter.app.render (c:\ nodejs \ node_modules \ express \ lib \ application.js:519:17)at ServerResponse.res.render (c:\ nodejs \ node_modules \ express \ lib \ response.js:933:7)at 在Layer.handle上的exports.about(c:\ nodejs \ routes \ index.js:11:9)[as handle_request] (c:\ nodejs \ node_modules \ express \ lib \ router \ layer.js:82:5)下一步 (c:\ nodejs \ node_modules \ express \ lib \ router \ route.js:110:13)at at Route.dispatch (c:\ nodejs \ node_modules \ express \ lib \ router \ route.js:91:3)at at Layer.handle [as handle_request] (c:\ nodejs \ node_modules \ express \ lib \ router \ layer.js:82:5)at at c:\ nodejs \ node_modules \ express \ lib \ router \ index.js:267:22 at Function.proto.process_params (c:\ nodejs \ node_modules \ express \ lib \ router \ index.js:321:12)下一步 (C:\的NodeJS \ node_modules \表达\ lib中\路由器\ index.js:261:10)
/Server.js
var express = require('express');
//route
var routes = require('./routes');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
app.use(express.static(__dirname + "/public"));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'vash');
app.get('/', routes.index);
app.get('/about', routes.about);
app.get('/contact', routes.contact);
app.use(bodyParser.json());
app.listen(3000);
console.log("yep >>> Server running on port 3000");
/routes/index.js
exports.index = function (req, res) {
res.render('index', { title: 'Express', year: new Date().getFullYear() });
};
exports.about = function (req, res) {
res.render('about', { title: 'About', year: new Date().getFullYear(), message: 'Your application description page.' });
};
exports.contact = function (req, res) {
res.render('contact', { title: 'Contact', year: new Date().getFullYear(), message: 'Your contact page.' });
};
这是文件结构:
答案 0 :(得分:0)
由于您未对视图使用.vash
文件扩展名,因此您需要告知Express查找.html
以及如何通过添加以下内容来处理它们:
app.engine('html', require('vash').renderFile);
答案 1 :(得分:0)
我认为你对此有两件事感到困惑:
就服务模板而言,最好的资源是阅读有关res.render(..)的快速官方文档
如果您希望 vash 成为默认模板引擎,那么您应该提及:
app.set('view engine', 'vash');
app.set('views', path.join( __dirname, '/views') );
接下来是关于在路线上提供 .vash 文件。
在此之前让我先纠正你的路线。 如果我正确理解您要实施的以下路线:
为此,您需要在 server.js :
中添加这些行var indexRoutes = require('./routes/index')
app.use('/', indexRoutes);
您可以将./routes/index.js文件更改为:
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('indexTpl', {title: 'Express', year: new Date().getFullYear()},
function(err, html) {
// ...
});
});
router.get('/about', function(req, res) {
res.render('aboutTpl', { title: 'About', year: new Date().getFullYear(), message: 'Your application description page.' },
function(err, html) {
// ...
});
});
router.get('/', function(req, res) {
res.render('contactTpl',{ title: 'Contact', year: new Date().getFullYear(), message: 'Your contact page.' },
function(err, html) {
// ...
});
});
module.exports = router;
请注意我将模板名称更改为 indexTpl.vish,contactTpl.vish,aboutTpl.vish 。在运行程序之前,请确保在'views'文件夹中包含 .vish 文件。
注意 :您可以在server.js中注释下面提到的三行,因为我们在index.js文件中使用路由器:
app.get('/', routes.index);
app.get('/about', routes.about);
app.get('/contact', routes.contact);
请参阅this示例以获取更多理解。
答案 2 :(得分:0)
您的文件扩展名错误。让我们改为
index.html
而不是
<!DOCTYPE html>
<html>
<head>
<title>Learning AJAX PHP</title>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<button id="lights" onClick="buttonSelect(this.id)">Toggle Lights now</button>
</body>
</html>