【问题标题】:Cannot pass mongo/express data to react无法通过 mongo/express 数据做出反应
【发布时间】:2018-09-09 07:35:48
【问题描述】:

我试图从 mongodb/express 传递我的数据以使用 componentDidMount() 生命周期函数做出反应,但由于某种原因它不起作用,而是给了我这个 "Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0" 错误。

这是我设置快递的方式:

app.get('/movies', function(req, res){
  movie.find({}, function(err, allMovies){
    if(err){
      console.log(err);
    } else {
      res.send(allMovies);
    }
  }) 
});

app.listen(3000, function(){
  console.log('App server is listening to 3000');
});

在我的 react 文件中,我调用了 componentDidMount 函数,该函数通过 webpack 在 8080 端口运行。

componentDidMount() {
  console.log('test')
  fetch('/movies')
    .then(response => response.json())
    .then(movies => this.setState({
      movies: movies
    }));
}

当我在 console.log 响应时,它会返回 https://prnt.sc/iye6kk

知道我做错了什么,为什么我的数据没有正确传递吗?

【问题讨论】:

    标签: mongodb reactjs express


    【解决方案1】:

    componentDidMount 中,脚本正在解析对 JSON 的响应。

    .then(response => response.json())
    

    但是服务器没有以 JSON 格式发送响应。

    以json格式发送。

    res.json({allMovies}); //ecma6 shorthand property names
    

    或者

    res.json({allMovies : allMovies}); 
    

    【讨论】:

    • 同样的事情。同样的错误。我需要同时运行 express 服务器和 webpack 服务器到 8080 吗?因为现在快递是 3000 而反应不是 8080
    • @TonyBeatty 不需要。只需确保在后端更改后重新启动服务器或简单地在后端使用 nodemon 启动服务器。
    • 我重新启动了 webpack(端口 8080)和 express 服务器(端口 3000),但仍然出现同样的错误。
    • @TonyBeatty 请检查标题响应“内容类型”值
    • 这是快递/电影:prntscr.com/iyfgqq,这是我看到的反应prntscr.com/iyfhbe
    猜你喜欢
    • 2022-01-19
    • 2019-11-11
    • 2022-08-03
    • 2018-02-25
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多