Node.js调用谷歌翻译API出现UnhandledPromiseRejectionWarning报错如何解决
问题原因
Google Cloud API的认证不能仅靠projectId完成,你当前使用的API密钥认证方式需要额外传入有效密钥参数。
解决方法
1. 生成可用的API密钥
先进入Google Cloud控制台,在「API和服务」-「凭证」页面创建服务器类型的API密钥,然后进入「API和服务」-「库」页面,找到Cloud Translation API并开启该密钥的访问权限。
2. 代码中传入API密钥
修改Translate实例的初始化配置,添加apiKey参数即可,修改后的代码如下:
const projectId = 'natural-nebula-number'; const apiKey = '替换为你刚才生成的API密钥'; const { Translate } = require('@google-cloud/translate').v2; const translate = new Translate({ projectId, apiKey }); async function quickStart() { const text = 'Hello, world!'; const target = 'ru'; const [translation] = await translate.translate(text, target); console.log(`Text: ${text}`); console.log(`Translation: ${translation}`); } quickStart();
3. 更安全的传参方式(推荐)
避免把密钥硬编码在代码里,可以通过环境变量传递:
- 本地开发:安装
dotenv依赖,在项目根目录创建.env文件写入GOOGLE_API_KEY=你的API密钥,代码顶部添加require('dotenv').config(),客户端会自动读取该变量 - 生产环境:直接在运行环境配置
GOOGLE_API_KEY环境变量即可,无需在代码中写密钥
官方参考位置
相关配置说明可以在Google Cloud官方文档的Cloud Translation v2 Node.js客户端认证章节找到。
内容的提问来源于stack exchange,提问作者Woo seok Yang
相关产品推荐
相关产品推荐

