如何修复“Uncaught (in promise) SyntaxError: Unexpected end of JSON input”?

时间:2021-06-16 20:42:34

标签: javascript reactjs next.js

当我尝试从 localhost 登录我的网站时,它工作正常。但是,当我尝试从我的生产版本中执行相同操作时,它不起作用。我想我知道为什么,但我不知道如何解决它。当我尝试从 prod 构建(托管在 Vercel 上)登录时,它不会发布到 https://fs-dev.vercel.app/api/auth/login,而是发布到 https://fs-dev.vercel.app/undefined/api/auth/login。我不知道为什么它会在 prod 版本中添加和 /undefined/。 (我正在使用 Next.js 及其 API 路由)。我已经检查过,baseUrl 是正确的,因为 prod 构建能够获取数据但不能 POST 数据。

这是我的帖子请求代码:

fetchData.js

export const postData = async (url, post, token) => {
  const res = await fetch(`${baseUrl}/api/${url}`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': token
    },
    body: JSON.stringify(post)
  })
  const data = await res.json()
  return data
}

登录.js

const res = await postData('auth/login', userData);

1 个答案:

答案 0 :(得分:0)

问题是,客户端需要环境变量 BASE_URL。为了解决这个问题,我在 BASE_URL 前面添加了 NEXT_PUBLIC_