Next js 如何在生产中获取绝对 URL?

onM*_*Way 1 javascript reactjs next.js getstaticprops getstaticpaths

我面临的问题是,在使用getStaticPathsgetStaticProps

export async function getStaticPaths() {
  const url =
    process.env.NODE_ENV === "development"
      ? "http://localhost:3000"
      : "https://websitename.vercel.app";
  const res = await fetch(`${url}/api/posts`);
  const posts = await res.json();
  console.log("posts: ", posts);

  const paths = posts.map(({ slug }) => ({
    params: { slug },
  }));

  console.log("Paths: ", paths);

  return { paths, fallback: false };
}

export async function getStaticProps({ params }) {
  console.log("params: ", params);
  const url =
    process.env.NODE_ENV === "development"
      ? "http://localhost:3000"
      : "https://websitename.vercel.app";
  const res = await fetch(`${url}/api/post`, {
    method: "POST",
    body: params.slug,
  });
  const post = await res.json();

  return {
    props: { post },
  };
}
Run Code Online (Sandbox Code Playgroud)

它在开发版本中运行良好,但在生产中它失败了,因为硬编码https://websitename.vercel.app不是由vercel. 生成的 URLvercel是这样的websitename-q1hdjf6c2.vercel.app

我该如何解决?提前致谢

小智 9

你可以使用${process.env.VERCEL_URL}/my/route.

查看

Vercel 环境变量