【问题标题】:strapi FetchError: request to http://localhost:1337/api/events failed, reason: connect ECONNREFUSED ::1:1337strapi FetchError:请求 http://localhost:1337/api/events 失败,原因:连接 ECONNREFUSED ::1:1337
【发布时间】:2023-01-26 14:18:07
【问题描述】:

如果我使用浏览器以 PUBLIC(未经身份验证的用户)身份访问 localhost:1337/api/events,我将返回以下信息:

{"data":[{"id":1,"attributes":{"name":"Throwback Thursday with DJ Manny Duke","slug":"throwback-thursday-with-dj-manny-duke","venue":"Horizon Club","address":"919 3rd Ave New York, New York(NY), 1002","date":"2022-07-20T02:00:00.000Z","time":"10:00 PM","createdAt":"2022-04-12T02:05:08.246Z","updatedAt":"2022-04-12T02:17:16.760Z","publishedAt":"2022-04-12T02:05:16.192Z","performers":"DJ Manny Duke","description":"Description for the vent of DJ Manny Duke"}},{"id":2,"attributes":{"name":"Boom Dance Festival Experience","slug":"boom-dance-festival-experience","venue":"Blackjacks","address":"123 Lexington","date":"2022-04-25T16:00:00.000Z","time":"8:00 PM","createdAt":"2022-04-12T02:26:32.123Z","updatedAt":"2022-04-12T02:26:33.540Z","publishedAt":"2022-04-12T02:26:33.538Z","performers":"DJ LUKE, DJ BLACKJACK","description":"Whatever Description"}},{"id":3,"attributes":{"name":"Encore Night Boat Party","slug":"encore-night-boat-party","venue":"Encore","address":"12343 New York","date":"2022-11-14T16:00:00.000Z","time":"7:00 PM","createdAt":"2022-04-12T02:28:06.028Z","updatedAt":"2022-04-12T02:28:36.292Z","publishedAt":"2022-04-12T02:28:07.622Z","performers":"BAD BOY BILL","description":"Description of Encore"}}],"meta":{"pagination":{"page":1,"pageSize":25,"pageCount":1,"total":3}}}

但是,当我使用 Next.JS 访问相同的链接时,我得到:

FetchError: request to http://localhost:1337/api/events failed, reason: connect ECONNREFUSED ::1:1337

为什么 strapi 拒绝连接?怎么修?

配置/index.js

export const API_URL =
    process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337'

页面/index.js

...

export async function getStaticProps() {
        const res = await fetch(`${API_URL}/api/events`)
        const events = await res.json()
    
        return {
            props: { events: events.slice(0, 3) },
            revalidate: 1,
        }
    }

-----更新代码到下面但仍然拒绝连接----

配置/index.js export const API_URL = 'http://localhost:1337'

页面/index.js

export async function getStaticProps() {
    const res = await fetch(`${API_URL}/api/events`, {
        headers: {
            Authorization: `bearer thetoken`,
        },
    })
    const events = await res.json()

    return {
        props: { events: events.slice(0, 3) },
        revalidate: 1,
    }
}

----下面是错误的屏幕截图,显示客户端 (NEXT.JS) 和服务器 (STRAPI) 的 2 个控制台都在运行----

【问题讨论】:

  • 服务器是同时侦听 IPv4 和 v6(单独或组合在一个堆栈上——取决于您的操作系统)还是仅侦听 v4?在后一种情况下,浏览器可能对 v4 很满意,但您的 nextJS 却没有。
  • 嗯……我不知道怎么回答这个问题……

标签: strapi


【解决方案1】:
// export const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://0.0.0.0:1337'
// COMMENTED OUT LINE ABOVE WORKS TOO JUST LIKE THE UNCOMMENTED CODE BELOW
export const API_URL =
    process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1337'

// BELOW IS NOT WORKING FOR SOME ODD REASON
// export const API_URL = 'http://localhost:1337'

【讨论】:

  • 极好的。将“localhost”更改为“127.0.0.1”就可以了。
  • 哇谢谢!这也解决了我的问题。这很奇怪。指向 localhost:1377... 的 chrome 浏览器工作正常。但是形成 getStaticProps,不!和 127.0.0.1 工作。很高兴知道。
【解决方案2】:

我遇到了同样的问题,直到我发现问题是我的节点版本高于 v16

【讨论】:

  • 天哪,我也是……3个小时就白费了
【解决方案3】:

指定 127.0.0.1:1337 而不是 localhost 解决了这个问题

【讨论】:

    【解决方案4】:

    在您的获取中,您需要从 Strapi 传递一个不记名授权令牌。您将在 Strapi Admin > Settings > API tokens > Create new API token 中找到您的令牌,现在复制该新令牌并在您的 fetch 调用中使用它。 例如你的令牌是XYZ123。像这样使用它:

    const res = await fetch(`${API_URL}/api/events`, { headers: { Authorization: `bearer XYZ123` } } )
    

    【讨论】:

    • 您好,我已经尝试使用 2 个新创建的具有完全访问权限的令牌,但它仍然拒绝连接。 Bearer和bearer我也试过。我还能缺少什么?
    • 您能否从 API_URL 中删除 process.env.NEXT_PUBLIC_API_URL 并测试调用是否真的转到您的本地主机。因为我刚刚在您的错误中注意到 connect ECONNREFUSED ::1:1337 。它应该显示您的本地主机地址代替 1 in 1:1337
    • 仍然拒绝 FetchError:请求localhost:1337/api/events失败,原因:连接 ECONNREFUSED ::1:1337
    • 已经改为 export const API_URL = 'localhost:1337' 非常感谢
    • 我在上面编辑了我的问题,以显示我更新的代码,其中包含在获取标头中的不记名令牌....
    【解决方案5】:

    .env 坏本地主机:1337 127.0.0.1:1337

    【讨论】:

      猜你喜欢
      • 2019-08-09
      • 2020-09-14
      • 2020-10-01
      • 2020-01-28
      • 2018-10-26
      • 2021-01-18
      • 2019-12-04
      • 2019-09-13
      • 2022-06-21
      相关资源
      最近更新 更多