所以...今天早上...我收到一封电子邮件,说:
我们的记录表明您拥有使用App Engine应用程序或 仍在调用GA前v0.1和v1beta1版本的云功能 App Engine和Cloud Functions元数据服务器的端点。
我们谨在此通知您,这些旧式端点是 计划于2020年4月30日关闭。2020年4月30日之后, 对v0.1和v1beta1端点的请求将不再 支持,并且可能返回HTTP 404 NOT FOUND响应。
我仅使用Firebase函数发送消息...,然后电子邮件继续标识出sendMessage函数为罪魁祸首。但是我不能...为了我的生命...弄清楚我需要在哪里更新端点。我的sendMessage函数如下:
exports.sendMessage = functions.database.ref('/messages/{receiverUid}/{senderUid}/{msgId}')
.onWrite(async (change, context) => {
const message = change.after.val().body;
const receiverUid = change.after.val().receiverUid;
const senderUid = change.after.val().senderUid;
const msgId = change.after.val().msgId;
if (!change.after.val()) {
return console.log('Sender ', senderUid, 'receiver ', receiverUid, 'message ', message);
}
console.log('We have a new message: ', message, 'for: ', receiverUid);
我尝试遵循以下链接中的一些卷曲建议:https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server
...但是每次尝试其中之一,我都会得到:
卷曲:(6)无法解析主机“ metadata.google.internal”
所以...在这一点上...我不知道我应该改变什么或者应该去哪里看。任何帮助将不胜感激。
答案 0 :(得分:1)
我在https://github.com/firebase/firebase-functions回购最新版本(3.3.0)中进行搜索,然后找到了文件:spec / fixtures / https.ts。在该文件中,有一些模拟函数,它们使用旧的/ computeMetadata / v1beta1端点。
这可能意味着应该将firebase-functions模块软件包更新为使用/ computeMetadata / v1端点。
答案 1 :(得分:0)
以前,我发现package.json
中的旧依赖性正在拖入其他非常老的软件包中:
"@google-cloud/functions-emulator": "^1.0.0-beta.6",
尤其是它带来了gcs-resumable-upload
v 0.10.2,低于google建议的v 0.13.0(请参阅https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server#apps-to-update)。可能也是其他人。
解决方法是:
@google-cloud/functions-emulator
,或@google-cloud/functions-framework
答案 2 :(得分:0)
我遇到了同样的问题,但没有列出here列出的我正在使用的库。
就我而言,罪魁祸首是firebase-admin
。我使用的是7.3.0版,并且找到了这个宝石:
$ grep -rni "computeMetadata/" *
firebase-admin/lib/auth/credential.js:30:var GOOGLE_METADATA_SERVICE_PATH = '/computeMetadata/v1beta1/instance/service-accounts/default/token';
因此,我更新了Cloud Functions库,如here所示:
npm install firebase-functions@latest --save
npm install firebase-admin@latest --save-exact
然后,瞧!
$ grep -rni "computeMetadata/" *
node_modules/firebase-admin/lib/auth/credential.js:30:var GOOGLE_METADATA_SERVICE_PATH = '/computeMetadata/v1/instance/service-accounts/default/token';
然后我重新部署并解决了问题。