簡體   English   中英

React App無法解析獲取路由:未處理的拒絕(SyntaxError):JSON中位置0處的意外令牌<

[英]React App not resolving fetch route: Unhandled Rejection (SyntaxError): Unexpected token < in JSON at position 0

我在快遞服務器中的提取源('wx')返回: 未處理的拒絕(SyntaxError):JSON在以下提取行中位置0處的意外標記< “ wx”的獲取源返回404。(盡管這是最終為氣象服務而設置的,但此處的任何測試都返回404)。

這是React:

import React, { Component } from 'react';
import './App.css';

class App extends Component {
  state = {wx: []}

  componentDidMount() {
    fetch('/wx').then(res => res.json()).then(wx => this.setState({ wx }));
  }

  render() {
    return (
      <div className="App">
        <h1>Weather</h1>
        {this.state.wx.map(weather =>
          <div key={weather.id}>{weather.main}>{weather.description}</div>
        )}
      </div>

    );
  }
}

export default App;

這是路由wx.js:

var express = require('express');
var app = express();
var router = express.Router();
var request = require('request');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');

    app.get('/', function(req, res){

        request({
                url: 'http://jsonplaceholder.typicode.com', //URL to hit
                method: 'POST'

            }, function(error, response, body){
                if(error) {
                    console.log(error);
                } else {
                    console.log(body);
                }
            });

            res.send(body);
    }); 

    module.exports = router;

為什么返回404,我該怎么辦?

聽起來您好像忘記了在package.json中設置代理端口,所以它返回的是html。 我遇到了同樣的問題,我只是想在我的package.json中設置代理:“ proxy”:“ http:// localhost:3001 ”,

您的錯誤與您收到的404錯誤有關。 res.json()嘗試將響應的主體轉換為JSON對象,但由於響應是HTML文檔,因此失敗。

您可以做的是在返回json之前檢查響應是否成功。

fetch('/wx').then(res => {
  if(res.status === 200) return res.json();
  else return { error: 'there was an error with response' }
}).then(wx => {
  if(wx.error) { /* handle error here */ }
  else {
    this.setState({ wx })
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM