Javascript 尝试使用节点运行路由示例代码时出现“获取网页不可用”错误
这里是Javascript新手 我正在尝试运行文档中给出的示例代码 代码:Javascript 尝试使用节点运行路由示例代码时出现“获取网页不可用”错误,javascript,node.js,Javascript,Node.js,这里是Javascript新手 我正在尝试运行文档中给出的示例代码 代码: var Router = require('routes'); var router = new Router(); router.addRoute('/admin/*?', auth); router.addRoute('/admin/users', adminUsers); http.createServer(function (req, res) { var path = url.parse(req.url
var Router = require('routes');
var router = new Router();
router.addRoute('/admin/*?', auth);
router.addRoute('/admin/users', adminUsers);
http.createServer(function (req, res) {
var path = url.parse(req.url).pathname;
var match = router.match(path);
match.fn(req, res, match);
}).listen(1337)
// authenticate the user and pass them on to
// the next route, or respond with 403.
function auth(req, res, match) {
if (checkUser(req)) {
match = match.next();
if (match) match.fn(req, res, match);
return;
}
res.statusCode = 403;
res.end()
}
// render the admin.users page
function adminUsers(req, res, match) {
// send user list
res.statusCode = 200;
res.end();
}
我可以通过node app.js运行它,它可以正常启动。然而,当我击中http://localhost:1337/admin 我得到以下错误:
TypeError: Cannot call method 'fn' of undefined
为了确保我没有在服务器中出错,我将其重置回示例节点应用程序:
http.createServer(function (req, res) {
.write("Hello world!");
res.end();
}).listen(1337)
这个运行正常。我可以点击localhost,看到它打印出helloworld。那么,为什么在运行routes示例代码时会出现类型错误呢 查看此处的路径格式: 显然,使用了router.addRoute'/admin/*?',auth;,我们不能期望在localhost:1337/admin或localhost:1337/admin获得服务/ 要实现此目的,只需拆下 只需使用router.addRoute'/admin/*',auth;您可以使用localhost:1337/admin/。尽管我仍然怀疑localhost:1337/admin是否有效。如文档所述,我们需要使用router.addRoute'/admin',auth 嗯,可能是因为/admin与/admin/*不匹配,所以不匹配任何规则?你试过访问/admin/而不是/admin吗?@路人是的/admin、/admin/、/admin/adsf。所有这些都会导致相同的错误。