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

Next.js应用使用Vercel Blob Storage时出现“No token found”错误

解决Vercel Blob客户端上传的"No token found"错误

核心问题原因

客户端组件无法直接读取未加NEXT_PUBLIC_前缀的Vercel环境变量,且put方法需要显式传入token参数(即使同属一个Vercel项目,客户端上传仍需指定token)。

分步解决方案

  • 修改环境变量命名
    将你的BLOB_READ_WRITE_TOKEN重命名为NEXT_PUBLIC_BLOB_READ_WRITE_TOKEN,因为客户端组件只能访问带NEXT_PUBLIC_前缀的环境变量。本地开发时把这个变量写入.env.local文件,Vercel部署时在项目设置的「环境变量」面板添加该变量。

  • 在代码中传入token
    从环境变量读取token,并添加到put方法的options参数中:

'use client'

import { put } from "@vercel/blob";

interface recordingsInterface {
    run: number;
    blob: Blob;
}

// Store a blob 
export const storeRecording = async ({run, blob} : recordingsInterface) => {
    const path = `recordings/userXY/${run}.webm`;
    const blobToken = process.env.NEXT_PUBLIC_BLOB_READ_WRITE_TOKEN;

    if (!blobToken) {
        throw new Error("BLOB_READ_WRITE_TOKEN is not set");
    }

    const options  = {
        access: 'public',
        contentType: "video/webm",
        token: blobToken, // 显式传入token
    }

    const storedBlob = await put(path, blob, options);
    return storedBlob;
};
  • 验证环境变量生效
    本地开发时需重启Next.js服务,确保新的环境变量被加载;部署到Vercel后,要确认环境变量已正确同步(可在Vercel部署日志中检查变量是否存在)。

额外注意事项

  • 客户端上传使用的是读写token,确保你在Vercel Blob控制台生成的是具备读写权限的token。
  • 虽然客户端上传支持大文件,但要注意Vercel Blob的单个文件大小限制(当前最大为5GB),以及浏览器端的上传超时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 10:05:07