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

Next.js服务端无法从Synology NAS获取文件:连接超时问题求助

问题

我在Next.js应用中从Synology NAS获取数据时遇到连接超时问题:

  • Next.js服务端发起fetch请求时触发Connect Timeout Error
  • 相同请求用curl命令或浏览器发起完全正常

报错信息如下:

⨯ unhandledRejection: TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11576:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  cause: ConnectTimeoutError: Connect Timeout Error
      at onConnectTimeout (node:internal/deps/undici/undici:8522:28)
      at node:internal/deps/undici/undici:8480:50
      at Immediate._onImmediate (node:internal/deps/undici/undici:8511:13)
      at process.processImmediate (node:internal/timers:476:21)
      at process.callbackTrampoline (node:internal/async_hooks:130:17) {
    code: 'UND_ERR_CONNECT_TIMEOUT'
排查与解决步骤

1. 确认服务端网络环境一致性

  • 本地开发时,在Next.js项目所在的终端窗口执行和服务端完全相同的curl请求,验证Node进程所在环境是否能访问NAS
  • 若用Docker部署Next.js,检查容器网络模式是否和主机同网段,能否ping通NAS的IP(浏览器/curl跑在主机网络,容器可能处于隔离网络)

2. 调整fetch超时配置

Next.js服务端的fetch基于undici,默认超时比浏览器/curl短,手动设置更长超时:

const res = await fetch('http://你的NAS地址/接口路径', {
  signal: AbortSignal.timeout(10000) // 设为10秒,根据实际情况调整
});

3. 检查NAS的访问限制

  • 登录Synology DSM,确认防火墙规则允许Next.js服务端所在IP访问
  • 检查NAS的目标服务(如File Station API、WebDAV)是否设置了IP白名单,将服务端IP加入允许列表
  • 确认NAS的端口是否正确开放,无其他服务占用冲突

4. 核对请求参数一致性

  • 对比服务端fetch的URL、请求头、参数和curl/浏览器的请求是否完全一致:
    • 避免相对路径解析错误(服务端环境下相对路径可能指向错误地址)
    • 检查Cookie、Authorization等请求头是否在服务端正确携带
    • 若用HTTPS,确认NAS的证书是否被Node信任(可临时关闭证书验证测试:fetch(url, { rejectUnauthorized: false }),仅用于排查)

5. 调整Node.js网络配置

  • 检查代理环境变量:执行echo $HTTP_PROXY $HTTPS_PROXY,浏览器/curl可能用了系统代理,但Node进程未继承,若不需要代理则清空变量后重启服务
  • 自定义undici代理配置,调整连接超时和存活时间:
import { Agent } from 'undici';

const agent = new Agent({
  connectTimeout: 10000,
  keepAliveTimeout: 30000
});

const res = await fetch('http://你的NAS地址/接口路径', { agent });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:33:19