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

NextJS生产环境报Path must be a string客户端异常

问题描述

此前从未遇到过此类错误。我在项目中维护了一个专门用于定义API调用方法的文件,最初通过读取环境变量拼接接口请求的基础地址:

/**
 * Prepended to request URL indicating base URL for API and the API version
 */
 const VERSION_URL = `${process.env.NEXT_PUBLIC_API_BASE_URL}/${process.env.NEXT_PUBLIC_API_VERSION}`

由于环境变量存在加载异常的问题,我尝试做了临时兼容处理:当对应环境变量未定义时,使用硬编码URL作为兜底值,修改后的代码如下:

/**
 * Prepended to request URL indicating base URL for API and the API version
 */
 const VERSION_URL = `${process.env.NEXT_PUBLIC_API_BASE_URL || 'https://hardcodedURL.com'}/${process.env.NEXT_PUBLIC_API_VERSION || 'v1'}`

在本地Docker容器中运行时,无论是开发模式还是生产构建模式,项目都能正常工作,但一旦将构建产物部署到线上生产环境,就会弹出应用错误页面,对应错误截图如下:
Application Error

浏览器控制台输出如下错误日志:

framework-bb5c596eafb42b22.js:1 TypeError: Path must be a string. Received undefined
    at t (137-10e3db828dbede8a.js:46:750)
    at join (137-10e3db828dbede8a.js:46:2042)
    at J (898-576b101442c0ef86.js:1:8158)
    at G (898-576b101442c0ef86.js:1:10741)
    at oo (framework-bb5c596eafb42b22.js:1:59416)
    at Wo (framework-bb5c596eafb42b22.js:1:68983)
    at Ku (framework-bb5c596eafb42b22.js:1:112707)
    at Li (framework-bb5c596eafb42b22.js:1:98957)
    at Ni (framework-bb5c596eafb42b22.js:1:98885)
    at Pi (framework-bb5c596eafb42b22.js:1:98748)
cu @ framework-bb5c596eafb42b22.js:1
main-f51d4d0442564de3.js:1 TypeError: Path must be a string. Received undefined
    at t (137-10e3db828dbede8a.js:46:750)
    at join (137-10e3db828dbede8a.js:46:2042)
    at J (898-576b101442c0ef86.js:1:8158)
    at G (898-576b101442c0ef86.js:1:10741)
    at oo (framework-bb5c596eafb42b22.js:1:59416)
    at Wo (framework-bb5c596eafb42b22.js:1:68983)
    at Ku (framework-bb5c596eafb42b22.js:1:112707)
    at Li (framework-bb5c596eafb42b22.js:1:98957)
    at Ni (framework-bb5c596eafb42b22.js:1:98885)
    at Pi (framework-bb5c596eafb42b22.js:1:98748)
re @ main-f51d4d0442564de3.js:1
main-f51d4d0442564de3.js:1 A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred
re @ main-f51d4d0442564de3.js:1

我查看报错位置t (137-10e3db828dbede8a.js:46:750)对应的压缩混淆后源码,对应截图如下:
Source at t

我完全无法理解该错误的触发逻辑:为什么已经对路径做了硬编码兜底,仍然会触发该客户端错误?生产构建后压缩混淆的代码可读性极差,导致问题定位十分困难。我初步检索相关问题得到的建议是升级相关依赖包,但错误提示过于模糊,我无法确定具体是哪个包引发的问题。

以下是VERSION_URL变量的大致使用方式:

/**
  * Send a get request to a given endpoint
  *
  * **Returns a Promise**
  */
 function GET(token, data, parent, api) {
   return new Promise((resolve, reject) => {
     try {
       let req = new XMLHttpRequest()
 
       let endpoint = `${VERSION_URL}/${parent}/${api}` // base url with the params not included
       let params = new URLSearchParams() // URLSearchParams used for adding params to url

       // put data in GET request params
       for (const [key, value] of Object.entries(data)) {
         params.set(key, value)
       }
 
       let query_url = endpoint + "?" + params.toString() // final query url
 
       req.open("GET", query_url, true)
       req.setRequestHeader("token", token) // put token into header
  
       req.onloadend = () => {
         if (req.status === 200) {
           // success, return response
           resolve([req.response, req.status])
         } else {
           reject([req.responseText, req.status])
         }
       }
 
       req.onerror = () => {
         reject([req.responseText, req.status])
       }
 
       req.send()
     } catch (err) {
       reject(["Exception", 0])
     }
   })
 }

希望能够得到该问题的排查方向与解决方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:36:13