我试图在我的云功能中访问Firebase云存储,但我一直在云功能日志中出现以下错误:
Error: Failed to import the Cloud Storage client library for Node.js. Make sure to install the "@google-cloud/storage" npm package. Original error: SyntaxError: Unexpected token {
at new FirebaseError (/srv/node_modules/firebase-admin/lib/utils/error.js:43:28)
at new Storage (/srv/node_modules/firebase-admin/lib/storage/storage.js:65:19)
at /srv/node_modules/firebase-admin/lib/firebase-app.js:255:20
at FirebaseApp.ensureService_ (/srv/node_modules/firebase-admin/lib/firebase-app.js:376:23)
at FirebaseApp.storage (/srv/node_modules/firebase-admin/lib/firebase-app.js:253:21)
at FirebaseNamespace.fn (/srv/node_modules/firebase-admin/lib/firebase-namespace.js:292:45)
at exports.initializeNewVideoUpload.functions.firestore.document.onCreate (/srv/index.js:383:24)
at cloudFunction (/srv/node_modules/firebase-functions/lib/cloud-functions.js:134:23)
at /worker/worker.js:825:24
at <anonymous>
下面是我的代码:
const admin=需要('Firebase-admin'); const函数=需要('Firebase-函数');
admin.initializeApp();
const db = admin.firestore();
exports.initializeNewVideoUpload = functions.firestore.document('new-videos-uploads/{id}').onCreate(async (snapshot, context) => {
const data = snapshot.data();
const fileNames = data.file_names;
const bucket = admin.storage().bucket('trumateappdev.appspot.com');
fileNames.forEach(async fileName => {
const actualFile = bucket.file(fileName);
const resumableUpload = await actualFile.createResumableUpload();
const uploadEndpointUrl = resumableUpload[0];
data.resumable_urls.push(uploadEndpointUrl);
});
await admin.firestore().collection('new-videos-uploads').doc(context.params.id).update(data);
});
下面是我的包中的依赖项。json:
"@google-cloud/storage": "^5.5.0",
"firebase-admin": "^9.2.0",
"firebase-functions": "^3.11.0"
PS:我在星火计划上
我在这里找到了这个解决方案。将此添加到您的package.json
:
"engines": {"node": "8"}
显然,出现此问题是因为您的节点。js版本太旧了
我正在构建一个android应用程序,使用谷歌app engine后端。 我在谷歌云存储的一个桶里有一些音频文件(手动上传),我想从后端访问它们(我想获得它们的URL并将它们发送到我的应用程序,这样它就可以播放音频文件)。 谢谢:)
我创建了一个存储触发云功能,当用户从前端上传一个文件时就会激活这个功能。现在我想获取上载该文件的用户的Firebase UID。我想,为了做到这一点,我需要另一个函数,在用户身份验证时触发。所以,基本上,身份验证函数是在用户登录时触发的,然后我们得到了UID,我想把这个UID传递给另一个函数(存储触发的一个),这就是我一直在纠结的部分。那有什么办法吗?
云功能文档说 //使用Firebase管理SDK访问Firebase实时数据库。const admin=require('firebase-admin');管理初始化EAPP(); 我使用的是Cloud Firesta,而不是实时数据库。我如何访问它?
我有一个用Typescript编写的Firebase云函数,在那里我可以访问Google存储桶。 我得到的错误是来自admin的Bucket与我的deleteOldBackup函数中的Bucket不同。 我如何获得Proper Typescript类型谷歌存储在我的firebase云功能?
对于vue-axios auth by api_token,我使用助手文件api.js。
我很抱歉。我以前也提出过同样的问题,但被认为与这个答案重复。我真的不明白那里的答案,我也不明白为什么那个问题会回答我的问题。在我看来很不一样。我需要获取图像对象,但答案是创建一个流。有人能帮我把答案和我的问题联系起来吗?我是新的云功能。请 ================================================================================