gpt4 book ai didi

node.js - Google Cloud 功能 - 存储 - 删除图像 - "ApiError: Error during request"

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:31 24 4
gpt4 key购买 nike

更新的问题

问题是ApiError:请求期间出错

代码:

import * as functions from 'firebase-functions';

const cors = require('cors')({ origin: true });

import * as admin from 'firebase-admin';

const gcs = admin.storage();

export const deleteImage = functions.https.onRequest((req, res) => {

return cors(req, res, async () => {

res.set('Content-Type', 'application/json');
const id = req.body.id;
const name = req.body.name;

const imageRef = gcs.bucket(`images/${name}`);

if (!name || !id) {
return res.status(400).send({message: 'Missing parameters :/'});
}

try {
await imageRef.delete();
console.log('Image deleted from Storage');
return res.status(200).send({status: 200, message: `Thank you for id ${id}`});
}
catch (error) {
console.log('error: ', error);
return res.status(500).send({message: `Image deletion failed: ${error}`});
}

});
});

问题就在这里:await imageRef.delete();,我收到以下错误:

ApiError: Error during request.

确实,我的其他函数之一中确实有 admin.initializeApp();,所以这不可能是问题,除非 GCF 有错误。

更深入的错误:

{ ApiError: Error during request.
at Object.parseHttpRespBody (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/src/util.js:187:32)
at Object.handleResp (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/src/util.js:131:18)
at /user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/src/util.js:496:12
at Request.onResponse [as _callback] (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/node_modules/retry-request/index.js:198:7)
at Request.self.callback (/user_code/node_modules/firebase-admin/node_modules/request/request.js:185:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (/user_code/node_modules/firebase-admin/node_modules/request/request.js:1161:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
code: undefined,
errors: undefined,
response: undefined,
message: 'Error during request.' }

(旧问题已删除)

最佳答案

“错误:发送后无法设置 header ”意味着您尝试向客户端发送两个响应。这无效 - 您只能发送一个回复。

如果 imageRef.delete() 失败并触发其上的 catch 回调,您的代码显然会向客户端发送两个 200 类型响应。

此外,您还混淆了await 和then/catch。它们不应该一起使用。您选择其中之一。通常,如果您使用await 进行异步编程,则不会同时使用具有相同promise 的then/catch。这是使用await 进行错误处理的更惯用用法:

try {
await imageRef.delete()
res.status(200).send({status: 200, message: `Thank you for id ${id}`});
} catch (error) {
res.status(500).send({message: `Image deletion failed: ${err}`});
}

另请注意,您通常会在失败时向客户端发送 500 响应,而不是表示成功的 200。

关于node.js - Google Cloud 功能 - 存储 - 删除图像 - "ApiError: Error during request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com