如何修复“未捕获(承诺)SyntaxError:JSON中位置0处的意外令牌<”错误

时间:2019-10-14 12:30:46

标签: javascript reactjs

当我尝试从api(https://openweathermap.org/)获取数据时,出现此错误。 未捕获(承诺)SyntaxError:意外令牌<在JSON中的位置0

这是我的代码。

import React from 'react';

import './App.css';

import Weather from "./components/Weather"
import 'bootstrap/dist/css/bootstrap.min.css'
import 'weather-icons/css/weather-icons.css'

const Api_Key="079b76b390ad70c628a14a9a141e5992";

class App extends React.Component {

    constructor(){
        super();
        this.state={};
        this.getWeather();
    }

    getWeather= async ()=>{
        const api_call = await fetch(
            `api.openweathermap.org/data/2.5/weather?q=London,uk&appid=${Api_Key}`,
        );

        const data = await api_call.json();

        console.log(data);
    }

    render()
    {
        return (
            <div className="App">
                <Weather/>
            </div>
        )
    }

}
export default App;

谢谢!

2 个答案:

答案 0 :(得分:1)

我在Ionic应用程序中遇到了同样的问题,我只是在URL之前添加了“ ./”,它对我有用: fetch('assets / files / data.json')=> fetch('./ assets / files / data.json')

答案 1 :(得分:0)

您将获得JSON。我只是想打电话给

async function get() {
  try {
    const res = await fetch(`http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=079b76b390ad70c628a14a9a141e5992`);
    const json = await res.json();
    console.log('json', json)
  } catch (err) {
    console.error('err', err);
  }

}

它回应:

{
"coord": {
"lon": -0.13,
"lat": 51.51
},
"weather": [
  {
"id": 520,
"main": "Rain",
"description": "light intensity shower rain",
"icon": "09d"
}
],
"base": "stations",
"main": {
"temp": 285.3,
"pressure": 1004,
"humidity": 93,
"temp_min": 284.15,
"temp_max": 286.48
},
"visibility": 10000,
"wind": {
"speed": 6.2,
"deg": 90
},
"clouds": {
"all": 90
},
"dt": 1571056651,
"sys": {
"type": 1,
"id": 1502,
"message": 0.0096,
"country": "GB",
"sunrise": 1571034113,
"sunset": 1571073060
},
"timezone": 3600,
"id": 2643743,
"name": "London",
"cod": 200
}

您可能错过了http://部分?