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

在Vercel无服务器函数中配置Google Vision的GOOGLE_APPLICATION_CREDENTIALS

在Vercel部署Google Vision OCR无服务器函数的认证问题解决方法

你遇到的问题根源在于,GOOGLE_APPLICATION_CREDENTIALS环境变量默认是指向凭据文件的路径,而不是直接存储JSON内容。Vercel的无服务器环境没法直接用文件路径的方式加载凭据,得换个方式直接传入解析后的JSON对象。

解决方法1:直接在代码中加载解析后的凭据

把你的service-key.json内容转成字符串存在Vercel的环境变量里(比如命名为GOOGLE_SERVICE_ACCOUNT),然后在代码里解析成对象传给客户端:

import vision from '@google-cloud/vision';

// 从环境变量解析服务账号凭据
const credentials = JSON.parse(process.env.GOOGLE_SERVICE_ACCOUNT);
const client = new vision.ImageAnnotatorClient({ credentials });

const analyze = async (req, res) => {
  try {
    const [result] = await client.textDetection(req.body.image);
    res.send(result);
  } catch (err) {
    res.status(500).send({ error: err.message });
  }
};

export default analyze;

注意事项

  • 在Vercel配置环境变量时,把service-key.json的内容直接粘贴进去,不要加额外的引号或者转义(Vercel会自动处理字符串格式)。
  • 一定要确保环境变量在Vercel的生产环境中已经生效,部署前可以在Vercel控制台的"Environment Variables"里确认。

关于google-auth-library的补充

如果之前用这个库没成功,也是因为凭据加载方式不对。同样可以用上面的方法,把解析后的凭据传给auth客户端:

import { GoogleAuth } from 'google-auth-library';

const credentials = JSON.parse(process.env.GOOGLE_SERVICE_ACCOUNT);
const auth = new GoogleAuth({ credentials, scopes: ['https://www.googleapis.com/auth/cloud-vision'] });
// 后续用auth获取令牌调用REST API即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:15:57