Javascript router.get不带参数,但请求参数

Javascript router.get不带参数,但请求参数,javascript,node.js,express,jwt,express-jwt,Javascript,Node.js,Express,Jwt,Express Jwt,我正在尝试使用expressnodejs和JWT。以下是我所经历的源代码: 我保护所有路由,但我在jwt.js文件中声明的路由除外 “/trial”url不受保护。控制器位于trial.controller.js文件中。当我在postman中点击url时,使用get和post方法,并且没有任何身份验证(No auth),我得到了我期望的结果 但是,当我点击'/users/testdata'时,同样的事情不会发生。它不受保护,但是如果我用get方法点击它,并且没有任何身份验证,它将返回error

我正在尝试使用expressnodejs和JWT。以下是我所经历的源代码:

我保护所有路由,但我在jwt.js文件中声明的路由除外

  • “/trial”
    url不受保护。控制器位于
    trial.controller.js
    文件中。当我在postman中点击url时,使用
    get
    post
    方法,并且没有任何身份验证(
    No auth
    ),我得到了我期望的结果
  • 但是,当我点击
    '/users/testdata'
    时,同样的事情不会发生。它不受保护,但是如果我用
    get
    方法点击它,并且没有任何身份验证,它将返回
    error 500
    ,并在postman中显示消息
    “cannotread property'sub'”of undefined“
    。但是,当我用
    post
    方法点击它时,我得到了我所期望的
  • 那么,
    get
    方法有什么问题


    有关完整代码,请参见上面的链接。任何帮助对我都很重要。谢谢大家!

    出现问题的原因是路由
    router.get('/:id',getById)在路由
    router.get('/testdata',getTest)之前定义。因此,当您对
    /testdata
    路由执行请求时,它由
    /:id
    路由处理,该路由需要身份验证才能工作,并使用
    currentUser.sub
    属性,尽管
    currentUser
    变量当前未定义

    只要把订单从

    router.get('/:id', getById);
    router.get('/testdata', getTest);
    


    哦,天哪,多么愚蠢的错误啊。这就是为什么我喜欢编程。谢谢你,乔治!
    router.get('/testdata', getTest);
    router.get('/:id', getById);