fetch SyntaxError: Unexpected token < in JSON at position 0

我在尝试使用fetch从express服务端获取数据时,总是报这个错,google也没有找到解决办法
server.js

var express = require('express')
var app = express()

app.get('../pages/endsite', function(req, res) {
  res.json({message: 'success'})
})

fetch

async function fetchGank() {
  try {
    let res = await fetch('../express/server')

    // 等待 parse json
    let data = await res

    console.log (data.message)
  }
  catch(e) {
    console.log(e)
  }

}
fetchGank()


是哪里出错了么?
阅读 18.6k
2 个回答

报这个错误一般要解析的 JSON 字符串不合法,我猜测你接收到的不是 JSON 字符串,而是 HTML 文本,所以报第一个字符是 <
你可以打印一下 res.headers.get('content-type'),看看是不是 application/json,或者通过其他方式看看接口返回的是否是合法的 JSON 字符串。
编辑

var app = require('express')()
app.get('/', (req, res) => {
  res.json({data: 'hello world'})
})
app.listen(3000)

直接返回res
不要返回res.json

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题