NextJS fetch 在调用 API 时出错

NextJS fetch giving an error when calling API

提问人:BigDevJames 提问时间:11/15/2023 更新时间:11/15/2023 访问量:40

问:

我有一个组件定义为:

import Image from "next/image";
import { getNavBarLogo } from "../lib/website";

export async function NavBarLogo() {
const data = await getNavBarLogo();

  return (
    <div>
      <Image
        className="h-18 w-auto"
        src={data.props.logo}
        alt="Logo"
        height={40}
        width={40}
      />
    </div>
  );
}

我还有以下功能:getNavBarLogo()

export async function getNavBarLogo() {
  const query = qs.stringify(
    {
      populate: { SmallLogo: { fields: ["url"] } },
    },
    {
      encodeValuesOnly: true,
    }
  );

  const res = await fetch(
    env.NEXT_PUBLIC_STRAPI_API_URL + "/website" + "?" + query,
    {
      method: "GET",
      headers: {
        Authorization: `Bearer ${env.NEXT_PUBLIC_STRAPI_API_TOKEN}`,
        "Content-Type": "application/json",
      },
    }
  );
  if (!res.ok) {
    throw new Error(res.statusText);
  }
  const data = await res.json();
  console.log(env.API_BASE + data.data.attributes.SmallLogo.data.attributes.url)
  return {
    props: {
      logo: env.API_BASE + data.data.attributes.SmallLogo.data.attributes.url,
    },
  };
}

一切似乎都在运行,但 Chrome 开发者工具显示以下内容:enter image description here

为什么它试图从 localhost 读取?我提供了一个 API URL 和一个令牌。我不明白错误告诉我什么。

reactjs next.js fetch-api strapi

评论

0赞 Youssouf Oumar 11/15/2023
这个 env 变量在哪里定义?
0赞 BigDevJames 11/16/2023
在我的机器上?在文件中。在 Azure 中,它将是 Web 应用中的环境变量。.env.local
0赞 Youssouf Oumar 11/16/2023
我是在,不应该吗?process.env.NEXT_PUBLIC_STRAPI_API_URL
0赞 BigDevJames 11/16/2023
如果是这样的话,我不会得到一个未知数而不是结果吗?此外,图像正在填充,因此它正在读取环境变量并返回图像 url,在此过程中也给了我大量错误。env

答:

0赞 Jay Garzon 11/15/2023 #1

我相信你的环境是不确定的。尝试正确设置它们/访问它们,可能来自进程。

评论

0赞 BigDevJames 11/15/2023
它们不是未定义的。正在拉取 URL,并且正在填充图像。