无法在路径参数中读取未定义的属性“名称”

时间:2014-12-31 03:07:05

标签: javascript node.js express routes

跟随ExpressJS course on TUTS+

我有以下(exact from video):

var express = require('express'),
app     = express();

app.get('/name/:name', function (req, res) {
    res.send('Your name is ' + res.params.name);
});

app.listen(3000);

但是,如果我转到http://localhost:3000/name/错误:无法获取/命名/

如果我转到http://localhost:3000/name/Leon

错误:

TypeError: Cannot read property 'name' of undefined
   at /Users/leongaban/Projects/Node/expressApp/server3.js:5:39
   at Layer.handle [as handle_request] (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/layer.js:82:5)
   at next (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/route.js:100:13)
   at Route.dispatch (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/route.js:81:3)
   at Layer.handle [as handle_request] (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/layer.js:82:5)
   at /Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/index.js:235:24
   at param (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/index.js:332:14)
   at param (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/index.js:348:14)
   at Function.proto.process_params (/Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/index.js:392:3)
   at /Users/leongaban/Projects/Node/expressApp/node_modules/express/lib/router/index.js:229:12

不确定我错过了什么?

2 个答案:

答案 0 :(得分:1)

params位于req。使用req.params.name

关于无法获取/命名/ ,如果您在路线中指定参数,则该网址的部分将与您的路线不匹配。您必须填充网址的:name部分才能点击该路线。

答案 1 :(得分:1)

请求对象包含参数而不是响应。想到你对服务器发出请求参数的请求吗?所以Request对象拥有它们

您需要req.params.name