我的默认路由/索引的路由器代码
/* GET home page. */
exports.index = function(req, res){
res.render('user', { title: 'Abcd' });
};
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.get('/helloworld', function(req, res) {
res.render('helloworld', { title: 'Hello, World!' })
});
module.exports = router;
得到错误,因为无法调用未定义的方法获取。我是节点js中的新用户,请任何人帮助我。
答案 0 :(得分:7)
尝试升级到Express 4.x.你可能正在运行3.x风格。
答案 1 :(得分:1)
路由器是express的中间件,它在第一次使用post()
或get()
时与express对象隐式注册。您可以但不必添加此明确调用use()
,这允许您使用express注册各种中间件,因此允许在考虑优先级的情况下配置处理和行为。
正确的初始化和使用可能如下所示:
编辑:将示例更改为“完整”的http服务器。
app.js
var http = require('http');
var express = require('express');
// Requiring express exports a function that creates the application. Call it!
var app = express();
// Set port to listen to
app.set('port', process.env.PORT || 3000);
// Set view engine
app.set('view engine', 'jade');
// Tell express to use the router middleware
// Can be omitted if precedence doesn't matter
// (e.g. for loading static resources)
app.use(app.router);
// Add callback handler for home (/) route
app.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
// Create http server by passing "app" to it:
http.createServer(app).listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
现在,如果您将最小视图放入视图的默认文件夹...
视图/ index.jade
doctype 5
html
head
meta(charset='utf-8')
title #{title}
meta(name='viewport', content='width=device-width, initial-scale=1.0')
body
div
h1 Gotcha! Title is "#{title}"
...并使用...
从控制台启动服务器$ node app.js
...你应该启动并运行你的第一个节点/ express / jade应用程序!