【问题标题】:Axios data coming out to be undefinedAxios 数据未定义
【发布时间】:2019-03-30 04:31:58
【问题描述】:

我在 nodeJs 中有一条看起来像这样的路由

app.get("/", (req, res) => {
  console.log(req.user)
 res.json(req.user)
})

这里的console.log显示未定义但如果我访问地址(localhost:3000/)

它显示以下数据(以 json 格式)

// 20181025193337
// http://localhost:3000/

{
  "isFormFilled": false,
  "_id": "5bd1a3d82101d36407f81218",
  "username": "Rohit Bhatia",
  "userId": "102775073203963169965",
  "image": "https://lh5.googleusercontent.com/-7HxFRQOCd9Q/AAAAAAAAAAI/AAAAAAAAAU8/pgzBQd9X6pA/photo.jpg?sz=250",
  "__v": 0
}

与我的 react 应用程序类似,我发出 axios 请求,其中 response.data 未定义(或“”)

 componentWillMount() {
         axios.get("http://localhost:3000/").then(response => {
             console.log(response)
         }).catch(error => {
             console.log(error)
         })
    }

如果我在我的路线中做这样的事情

 app.get("/", (req, res) => {
      console.log(req.user)
     res.json("here)
    })

我的axios 请求中的数据显示为"Here"

[问题:] 为什么会发生这种情况,或者我在这里做错了什么?

Ps:由于我在本地提出请求,我已启用 crocs 资源共享

【问题讨论】:

  • 在本地发出请求并不意味着允许CORS。
  • 不,我的意思是我使用插件来允许跨源请求。未定义数据的原因和答案是因为 req.user cookie 在我执行 axios 请求时没有请求,但在我直接转到 localhost:3000 时存在
  • 您的问题不完整。我建议您过去整个服务器文件代码,而不仅仅是 app.get。检查您给我的存储库 (github.com/irohitb/goodED) 我看到这是一个与护照身份验证中间件相关的问题。 Passport 将用户属性添加到请求对象。因为在您的 axios 请求中,您没有提供任何允许护照创建用户(如 cookie 或身份验证标头)的内容,所以它返回未定义。
  • @croraf 我意识到发布这个问题并且由于已经有答案,我无法删除/删除这个问题

标签: javascript express passport.js axios


【解决方案1】:

您是 console.logging req.user,它不在您的对象中,因此它未定义。 console.log(req.userId)console.log(req.username) 并注意它已定义

【讨论】:

  • userID 在 req.user 中
猜你喜欢
  • 2017-09-27
  • 2019-12-18
  • 1970-01-01
  • 2021-01-11
  • 2022-09-23
  • 2021-07-31
  • 2021-05-26
  • 2019-01-01
  • 2019-08-26
相关资源
最近更新 更多