Next.js 13连接Upstash Redis时出现startsWith读取未定义属性错误
Upstash Redis连接报错:Cannot read properties of undefined (reading 'startsWith')
问题代码
import { Redis } from "@upstash/redis"; const redis = new Redis({ url: process.env.UPSTASH_REDIS_URL, token: process.env.UPSTASH_REDIS_TOKEN });
错误信息
- error node_modules\@upstash\redis\esm\platforms\nodejs.js (27:36) @ startsWith - error Error [TypeError]: Cannot read properties of undefined (reading 'startsWith') at new Redis (webpack-internal:///(rsc)/./node_modules/@upstash/redis/esm/platforms/nodejs.js:30:37) at eval (webpack-internal:///(rsc)/./app/upstash/page.tsx:10:15) at (rsc)/./app/upstash/page.tsx (C:\SourceCode\nextjs\.next\server\app\upstash\page.js:975:1) at Function.__webpack_require__ (C:\SourceCode\nextjs\.next\server\webpack-runtime.js:33:42) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async collectGenerateParams (C:\SourceCode\nextjs\node_modules\next\dist\build\utils.js:828:17) { digest: undefined }
问题原因
错误根源是process.env.UPSTASH_REDIS_URL或process.env.UPSTASH_REDIS_TOKEN为undefined,Upstash Redis初始化代码尝试对undefined值调用startsWith方法,触发类型错误。
解决方案
- 检查环境变量配置:确保项目根目录存在
.env.local文件,且变量配置正确:UPSTASH_REDIS_URL="你的Upstash Redis实例URL" UPSTASH_REDIS_TOKEN="你的Upstash Redis访问令牌" - 重启开发服务器:修改环境变量后必须重启Next.js开发服务器,否则新变量不会生效。
- 验证变量加载情况:在代码中添加日志打印,确认变量是否成功加载:
如果输出为console.log("Redis URL:", process.env.UPSTASH_REDIS_URL); console.log("Redis Token:", process.env.UPSTASH_REDIS_TOKEN);undefined,检查.env.local文件路径是否正确、变量名拼写是否无误。 - 注意组件类型:Upstash Redis连接逻辑应放在服务器组件或API路由中,无需给环境变量添加
NEXT_PUBLIC_前缀(该前缀仅用于客户端组件访问的变量)。
内容的提问来源于stack exchange,提问作者tthogho1
相关产品推荐
相关产品推荐

