javascript - router.get 没有参数但要求参数

标签 javascript node.js express jwt express-jwt

我正在尝试使用 express nodejs 和 JWT。这是我所经历的源代码:link .

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

  1. '/trial' url 不 protected 。 Controller 位于 trial.controller.js 文件中。当我在 postman 中使用 getpost 方法并且没有任何身份验证(No Auth)时,我得到了我想要的期待。
  2. 但是,当我点击 '/users/testdata' 时,同样的事情不会发生。它不 protected ,但如果我使用 get 方法访问它并且没有任何身份验证,它会返回 error 500 并显示消息 “Cannot read property 'sub' of未定义” 在 postman 中。但是,当我使用 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);   

关于javascript - router.get 没有参数但要求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663749/

相关文章:

JavaScript object.hasOwnProperty(proName) vs lodash _.has(obj, proName) 函数

Javascript 将小时和分钟转换为天

node.js - 使用 Node.js 获取 XBee 的 MAC 地址

javascript - '未捕获的语法错误 : Unexpected token <' in Node. js

node.js - 找不到模块 'express'(带有 docker 的 Node 应用程序)

node.js - MongoDB Mongoose 子文档创建了两次

javascript - 如何在 JavaScript 中链接两到三个第三方回调?

javascript - VBA拦截Internet Explorer链接点击

node.js - 使用 node.js 在特定延迟后从 Azure ServiceBus 主题发送消息

javascript - 发送带有 JSON 正文的文件