You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js调用Strapi API出现ECONNREFUSED连接拒绝错误求助

问题:Next.js向Strapi API发起请求时出现连接拒绝错误

背景

我正在尝试从Next.js应用向Strapi API发起请求,已通过Insomnia和Postman直接请求Strapi成功,但Next.js端请求失败。已验证CMS_STRAPI_TOKEN正确,Next.js应用访问地址为http://localhost:3000/faq。

Strapi服务文件(src/services/common/strapi.service.ts)

import { URLSearchParams } from "url"; 
const API_URL = "http://localhost:1337/api";

//Generic get method
export const strapiGet = async <T>(endpoint: string, params?: URLSearchParams): Promise<T> => {
    const res = await fetch(`${API_URL}${endpoint}${params ? `?${params}` : ''}`, {
        headers: {
            'Authorization': `Bearer ${process.env.CMS_STRAPI_TOKEN}`
        }
    });

    if(!res.ok) {
        throw new Error('Failed to retrieve in strapi: ' + endpoint);
    }

    return res.json();
}

faqs.service文件(src/services/faqs/faqs.service.ts)

import { StrapiResultType } from "@/types/strapi.types";
import { FAQPageType } from "@/types/faq.types";
import { strapiGet } from "../common/strapi.service";

class FAQsAPI {
    getFAQPages = async (): Promise<StrapiResultType<FAQPageType>> => strapiGet(`/faq-pages`);   
}

const faqsApi = new FAQsAPI();
export default faqsApi;

FAQ页面组件(src/app/faq/page.tsx)

import FAQSection from "@/components/faq/FAQSection";
import faqsApi from "@/services/faqs/faqs.service";

export default async function FAQPage() {
    const faqPages = await faqsApi.getFAQPages();
  return ( <main>
        <FAQSection sections={faqPages.data}/>
    </main>
  );
}

错误信息

浏览器网络面板显示请求状态码500,控制台抛出:

⨯ TypeError: fetch failed
    at async strapiGet (./src/services/common/strapi.service.ts:8:17)
    at async FAQPage (./src/app/faq/page.tsx:13:22)
Cause: Error: connect ECONNREFUSED ::1:1337
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1495:16)
    at TCPConnectWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
  errno: -4078,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '::1',
  port: 1337
}

解决方案

  • 替换localhost为127.0.0.1:错误显示连接的是IPv6地址::1,而Strapi可能仅监听了IPv4。将API_URL改为http://127.0.0.1:1337/api,强制使用IPv4连接。
  • 检查Strapi监听地址:查看Strapi配置文件(config/server.js或config/server.ts)中的host字段,确保设置为0.0.0.0或127.0.0.1,避免仅绑定IPv6地址。
  • 确认端口占用情况:验证1337端口未被其他服务占用,且Strapi确实在该端口运行。
  • 环境适配地址:若在Docker容器或生产环境运行,需将API地址改为Strapi的容器名称或服务域名,而非localhost。

内容的提问来源于stack exchange,提问作者tukitooo1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:33:21