google-cloud-platform - 错误:您需要传递 auth 实例才能在浏览器或其他非 Node.js 环境中使用 gRPC-fallback 客户端
问题描述
我正在尝试使用以下命令设置 google 应用程序凭据set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
(我将 KEY_PATH 替换为包含我的服务帐户密钥的 JSON 文件的路径)。
当我运行这个命令
gcloud auth application-default print-access-token
一切正常。
但我在浏览器上收到此错误
错误:{"servicePath":"vision.googleapis.com","port":443,"clientConfig":{},"fallback":true}您需要传递 auth 实例才能在浏览器或其他设备中使用 gRPC-fallback 客户端非 Node.js 环境。使用来自 google-auth-library 的 OAuth2Client。
这是我使用视觉的文件:
import React, { useEffect, useRef } from "react";
import Webcam from "react-webcam";
const Home = () => {
// Get a reference to the Cloud Vision API component
const Vision = require('@google-cloud/vision');
const vision = new Vision.ImageAnnotatorClient();
const webcamRef = React.useRef(null);
const [imgSrc, setImgSrc] = React.useState(null);
const capture = React.useCallback(() => {
const imageSrc = webcamRef.current.getScreenshot();
let text;
vision.textDetection(imageSrc)
.then(([detections]) => {
const annotation = detections.textAnnotations[0];
text = annotation ? annotation.description : '';
console.log(`Extracted text: ${text}`);
console.log(`Extracted text from image (${text.length} chars)`);
}).catch(vis_err => {
console.error("Vision error:" , vis_err);
});
setImgSrc(imageSrc);
}, [webcamRef, setImgSrc]);
return (
<>
<Webcam
audio={false}
ref={webcamRef}
screenshotFormat="image/jpeg"
/>
<button onClick={capture}>Capture photo</button>
{imgSrc && (
<img
src={imgSrc}
/>
)}
</>
);
};
export default Home
谁能解释为什么会发生这种情况以及如何解决?任何帮助,将不胜感激!
解决方案
这个问题不久前在 Github 上关闭:
这个库应该用于服务器端 Node.js 应用程序,而不是任何前端环境,例如浏览器、Electron 应用程序、React(在此处命名您的前端框架)。如果您只是通过普通的常规 Node.js 运行代码,它将起作用。话虽如此 - 我们确实从最新版本 0.11.0 开始对浏览器用例提供实验性支持。它是实验性的(刚刚实现),还没有真正记录在案。你可以尝试使用它。为此,您需要将经过身份验证的 OAuth2Client 实例(来自 google-auth-library)作为客户端构造函数的 auth 参数传递
这是链接:https ://github.com/googleapis/nodejs-dialogflow/issues/405#issuecomment-529713296
推荐阅读
- python - 自动分配给 Python 默认参数的参数
- php - 如何实时更新页面以响应数据库更改?
- php - 如何让php将变量发送到python?
- laravel - 如何在Laravel 上使用 GuzzleHttp 提取标签
- java - 无法导入 android.support.v4.content.ContextCompat
- python - 使用在 Droplet 上执行的 BeautifulSoup 脚本时出错
- python - Matplotlib:如何根据列值为散点图圆圈赋予颜色
- azure-service-fabric - SF - 高可用性选项?
- node.js - node.js express - 如何将 POST 正文参数传递回原始表单以在失效时重新填充?
- excel - 在 Excel VBA 中识别字符串模式