簡體   English   中英

Node FetchError:無效的JSON響應正文-JSON中的意外令牌<

[英]Node FetchError: invalid json response body - unexpected token < in JSON

當我嘗試從服務器路由獲取響應時,出現以下錯誤: FetchError: invalid json response body - unexpected token < in JSON

我認為問題是當我執行response.json()

當我使用Postman到達同一端點時,我得到了想要的響應。 這是怎么回事

注意:我的api令牌可以公開使用

server.js

const express = require('express')
const path = require('path')
const bodyParser = require('body-parser')
const fetch = require('node-fetch')

const app = express()
const port = process.env.PORT || 5000

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

const TRANSLINK_TOKEN = 'j2bXKzENILvyoxlZ399I'
const TRANSLINK_URL = 'http://api.translink.ca/rttiapi/v1/buses?apikey='

// API routes
app.get('/buses/location', (req, res) => {
  const apiURL = `${TRANSLINK_URL}${TRANSLINK_TOKEN}`
  console.log(apiURL)

  fetch(apiURL)
    .then(response => {
      if (response.ok) {
        console.log("response ok")
        response.json()
        .then((data) => {
          res.json(data)
        })
      }
      else {
        res.sendStatus(response.status)
      }
    })
    .catch(error => {
        console.log(error)
        alert(error.message)
    })
})



app.listen(port, () => console.log(`Listening on port ${port}`))

您的API返回XML而不是json,請確保apiURL返回有效的json對象

要檢查響應,請將console.log(data)放在res.json(data)之前

您可以使用XML2JSON包將響應轉換為json格式,也可以使用res.send(data) 照原樣檢索xml響應

fetch(apiURL)
    .then(response => {
      if (response.ok) {
        console.log("response ok");
        console.log(response.body);
          // Add XML2JSON to convert body 
        res.send(response.body);
      }
      else {
        res.sendStatus(response.status)
      }
    })

暫無
暫無

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

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