Node.js实现的Google Cloud Vision文字识别Post API在Postman中无响应
排查Google Cloud Vision OCR API无响应问题
以下是针对你的API无响应问题的排查方向:
确认上传字段名匹配
代码中使用upload.single("file"),意味着Postman表单数据的Key必须严格为"file"。如果表单里的字段名是其他(比如"image"、"upload"),req.file会是undefined,导致client.textDetection传入无效路径,请求卡住无响应。检查Postman的表单数据Key是否与代码一致。验证文件上传与路径有效性
- 在路由处理函数开头添加日志,确认是否成功获取上传文件:
app.post("/images", upload.single("file"), function (req, res) { console.log("上传文件信息:", req.file); // 打印文件信息 if (!req.file) { return res.status(400).send("未上传文件"); } client.textDetection(req.file.path) // ... 后续代码 }); - 检查
req.file.path对应的本地文件是否存在,Node.js进程是否有读取该文件的权限。如果文件未正确保存(比如multer存储路径配置错误),会导致Vision API无法读取文件,请求停滞。
- 在路由处理函数开头添加日志,确认是否成功获取上传文件:
检查Google Cloud Vision客户端初始化
确保你已正确初始化Vision客户端:- 已设置环境变量
GOOGLE_APPLICATION_CREDENTIALS指向你的服务账号密钥文件; - 或在代码中显式传入认证配置:
const { ImageAnnotatorClient } = require('@google-cloud/vision'); const client = new ImageAnnotatorClient({ keyFilename: '/path/to/your/service-account-key.json' });
客户端未正确初始化会导致
textDetection请求一直处于pending状态,无法返回响应。- 已设置环境变量
捕获并处理所有异常
当前代码的catch块仅捕获textDetection的Promise异常,但如果req.file不存在时调用textDetection,可能出现未被捕获的错误。建议添加前置判断(如上面日志示例中的if (!req.file)),同时在全局添加错误中间件,避免请求因未处理的异常挂起:app.use((err, req, res, next) => { console.error("全局错误:", err); res.status(500).send("服务器内部错误"); });
内容的提问来源于stack exchange,提问作者Kunal Pandey
相关产品推荐
相关产品推荐

