You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Storage文件上传报错:‘请注意,这可能是生产服务’

Firebase Storage上传文件出现NotFound错误及"Be careful, this may be a production service"提示

问题详情

已按操作创建ServiceAccountKey.json,但向Firebase Storage上传文件时触发异常,提示"Be careful, this may be a production service",同时出现NotFound错误。

环境信息

  • Node.js版本:16
  • 相关依赖:
cupertino_icons: ^1.0.2
firebase_core: ^1.24.0
firebase_database: ^9.1.6
video_player: ^2.4.7
camera: ^0.10.0+3
cloud_firestore: ^3.5.1
firebase_auth: ^3.11.2
dio: ^4.0.6
flutter_cors: ^1.3.2
convert: ^3.0.2
flutter_signin_button: ^2.0.0
google_sign_in: ^5.4.2
path_provider: ^2.0.2
firebase_storage: ^10.3.11

上传代码

var admin = require("firebase-admin");
    
var serviceAccount = require("./serviceAccountKey.json");
    
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://123-default-rtdb.firebaseio.com"
});
    

exports.saveVideoOnStorage = functions.https.onRequest(async (req, res) => {
    inputFile = '/Users/nativvered/pubspec.yaml';
    const myStorage = admin.storage();
    const bucket = admin.storage().bucket('gs://123.appspot.com/Files');

    await bucket.upload(inputFile);
});

异常信息

Google API requested!
   - URL: "https://www.googleapis.com/oauth2/v4/token"
   - Be careful, this may be a production service.
⚠  Google API requested!
   - URL: "https://storage.googleapis.com/upload/storage/v1/b/challenge-me-vn.appspot.com/Videos/o?uploadType=multipart&name=pubspec.yaml"
   - Be careful, this may be a production service.
⚠  functions: Error: Not Found
    at new ApiError (/Users/nativvered/Documents/MyFlluter/vered2/functions/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:78:15)
    at Util.parseHttpRespMessage (/Users/nativvered/Documents/MyFlluter/vered2/functions/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:180:41)
    at Util.handleResp (/Users/nativvered/Documents/MyFlluter/vered2/functions/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:154:76)
    at /Users/nativvered/Documents/MyFlluter/vered2/functions/node_modules/@google-cloud/storage/build/src/nodejs-common/util.js:500:22
    at onResponse (/Users/nativvered/Documents/MyFlluter/vered2/functions/node_modules/retry-request/index.js:228:7)
    at /Users/nativvered/Documents/MyFlluter/vered2/functions/node_modules/teeny-request/build/src/index.js:157:17
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
⚠  Your function was killed because it raised an unhandled error.

解决办法

  1. 修正Bucket名称格式
    代码中bucket('gs://123.appspot.com/Files')的写法错误,Files是Bucket内的文件夹,不是Bucket本身的名称。正确做法是只传入Bucket根名称,上传时通过destination指定文件夹路径:

    const bucket = admin.storage().bucket('gs://123.appspot.com');
    await bucket.upload(inputFile, { destination: 'Files/pubspec.yaml' });
    

    另外异常中显示请求的Bucket是challenge-me-vn.appspot.com,和代码里的123.appspot.com不匹配,需确认Bucket名称是否正确。

  2. 检查ServiceAccount权限
    确认ServiceAccountKey对应的账号拥有Storage Admin或Storage Object Creator权限。可在Firebase控制台「项目设置」→「服务账号」找到对应账号,前往Google Cloud IAM页面为其添加权限。

  3. 验证本地文件路径
    确保inputFile指向的本地文件真实存在,路径无拼写错误。可添加文件存在性检查:

    const fs = require('fs');
    if (!fs.existsSync(inputFile)) {
        return res.status(400).send('本地文件不存在');
    }
    
  4. 完善云函数响应逻辑
    原函数未返回任何响应,会导致函数被强制终止。上传完成后需返回成功状态:

    await bucket.upload(inputFile, { destination: 'Files/pubspec.yaml' });
    res.status(200).send('文件上传成功');
    

内容的提问来源于stack exchange,提问作者Nativ Vered

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:05:25