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

这里是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).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。所有这些都会导致相同的错误。