NEXT JS TypeError: Failed to parse URL from /api/projects OR Error: connect ECONNREFUSED 127.0.0.1:3000

20jt8wwn  于 2023-01-02  发布在  其他
关注(0)|答案(2)|浏览(406)

即时通讯使用

export const getStaticProps = async () => {
export const getStaticPaths = async () => {

以及访问我的API(pages/api/proyects/),该API是在我的本地主机中使用next js创建的

const res = await fetch("http://localhost:3000/api/projects");

当我在netlify中构建应用程序时,我收到此错误连接ECONNREFUSED 127.0.0.1:3000,因此我尝试将URL仅更改为"/api/projects/"

const res = await fetch("/api/projects/");

但我得到一个新的错误"TypeError:无法解析/api/project "中的URL,因此next js需要完整的URL才能访问数据。
我在netlify中的最终URL是https://v2ds.netlify.app,所以我认为我首先需要运行我的API,但是如果要让我的API运行,我需要部署我的应用程序,我该怎么做呢?
"netlify想要这个:"

const res = await fetch("https://v2ds.netlify.app/api/projects/");

但是如果应用程序不是第一次构建,我如何访问API呢?我正在使用getStaticProps、getStaticPaths mongoose和next js的API
所以最后一个问题是我如何部署我的应用程序来netlify和访问build moment中的数据?
谢谢,希望你能帮助我

kknvjkwl

kknvjkwl1#

检查您的mongod终端是否与mongosh数据库正确连接。

31moq8wy

31moq8wy2#

你可以根据运行环境,通过分离API请求的基本URL来实现这一点。
让我们创建一个名为checkEnvironment的组件,然后只从该组件返回基本URL。

export const checkEnvironment = () => {
  let base_url =
    process.env.NODE_ENV === "development"
      ? "http://localhost:3000"
      : "https://example.com"; // https://v2ds.netlify.app

  return base_url;
};

然后在getStaticProps中使用它,就像这样:

export const getStaticProps = async (ctx: any) => {
    const posts = await fetch(checkEnvironment().concat("/api/posts"));
    const json = await posts.json();
  
    return {
      props: { data: json },
    };
};

相关问题