首页 > 解决方案 > 使用 Express 部署时出现 Firebase 功能错误

问题描述

我有一个在后端使用 Firebase 的 Express 应用程序,我正在尝试部署此功能:

const functions = require('firebase-functions');
const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send(`Test Function`);
});

exports.app = functions.https.onRequest(app);

但是,当我输入firebase deploy命令时,控制台中的部署会挂在这里:

=== Deploying to 'foodbankexpress-54df5'...

i  deploying database, storage, firestore, functions, hosting
i  database: checking rules syntax...
+  database: rules syntax for database foodbankexpress-54df5-default-rtdb is valid
i  firebase.storage: checking storage.rules for compilation errors...
+  firebase.storage: rules file storage.rules compiled successfully
i  firestore: reading indexes from firestore.indexes.json...
i  cloud.firestore: checking firestore.rules for compilation errors...
+  cloud.firestore: rules file firestore.rules compiled successfully
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
+  functions: required API cloudfunctions.googleapis.com is enabled
+  functions: required API cloudbuild.googleapis.com is enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (49.39 KB) for uploading
i  storage: latest version of storage.rules already up to date, skipping upload...
+  firestore: deployed indexes in firestore.indexes.json successfully
i  firestore: latest version of firestore.rules already up to date, skipping upload...
+  functions: functions folder uploaded successfully
i  hosting[foodbankexpress-54df5]: beginning deploy...
i  hosting[foodbankexpress-54df5]: found 5 files in public
+  hosting[foodbankexpress-54df5]: file upload complete
i  database: releasing rules...
+  database: rules for database foodbankexpress-54df5-default-rtdb released successfully
+  storage: released rules storage.rules to firebase.storage
+  firestore: released rules firestore.rules to cloud.firestore
i  functions: updating Node.js 14 function app(us-central1)...

它挂起,然后我必须终止部署。我查看了 Firebase 控制台中的功能日志,这是它给我的错误:

{"@type":"type.googleapis.com/google.cloud.audit.AuditLog","authenticationInfo":{"principalEmail":"tylerdukedev@gmail.com"},"requestMetadata":{"callerIp":"73.129.233.103","callerSuppliedUserAgent":"FirebaseCLI/9.20.0,gzip(gfe),gzip(gfe)","requestAttributes":{"time":"2021-10-13T16:14:51.463038Z","auth":{}},"destinationAttributes":{}},"serviceName":"cloudfunctions.googleapis.com","methodName":"google.cloud.functions.v1.CloudFunctionsService.UpdateFunction","authorizationInfo":[{"resource":"projects/foodbankexpress-54df5/locations/us-central1/functions/app","permission":"cloudfunctions.functions.update","granted":true,"resourceAttributes":{}}],"resourceName":"projects/foodbankexpress-54df5/locations/us-central1/functions/app","request":{"updateMask":"name,sourceUploadUrl,entryPoint,runtime,httpsTrigger,labels,environmentVariables","function":{"httpsTrigger":{},"sourceUploadUrl":"https://storage.googleapis.com/gcf-upload-us-central1-59a7be26-a95d-441e-a19b-97f26081d584/3c5db291-43a2-416f-a4fa-29a3a85d4a7c.zip?GoogleAccessId=service-736202788738@gcf-admin-robot.iam.gserviceaccount.com&Expires=1634143488&Signature=DEMC0z0rMoBopd7TY9s8kuF3Vbe7h1DakSLlsHo%2F9rDJYc12lT9qeMB1uEZo3%2BNFhFEM4t9hp77vcBfByzJAvAoiChyv6N2qXift4%2BppQktRWfebyUPwf7v3PP7EWIrw7sxhrQfuTZZ7laht03OFj1o%2FVqTDzSSmspRFihsMNkL%2BUKPZZBOMpv02g0QxLY6%2F2BjhJDT3Q36o2cnCPPjbnS9%2B3rG94Lx8FG4vF3cucJLcnE2OnUdlAU0F1Xpk8ujWAAoBP%2Bq1URTsvOZptkVheanYWikSiNV81aL1EH1pAuwRk5SJljANt%2FYiF2fVTUdETus5Nhn9ATbwFmdFdiG%2FzA%3D%3D","name":"projects/foodbankexpress-54df5/locations/us-central1/functions/app","runtime":"nodejs14","entryPoint":"app","labels":{"deployment-tool":"cli-firebase"}},"@type":"type.googleapis.com/google.cloud.functions.v1.UpdateFunctionRequest"},"resourceLocation":{"currentLocations":["us-central1"]}}

非常感谢任何帮助,因为我是 Firebase 的新手并在其上部署应用程序。

这是我package.json文件functions/夹中的文件:

{
    "name": "functions",
    "description": "Cloud Functions for Firebase",
    "scripts": {
        "serve": "firebase emulators:start --only functions",
        "shell": "firebase functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
    },
    "engines": {
        "node": "14"
    },
    "main": "index.js",
    "dependencies": {
        "firebase-admin": "^9.8.0",
        "firebase-functions": "^3.14.1"
    },
    "devDependencies": {
        "firebase-functions-test": "^0.2.0"
    },
    "private": true
}

这是我的firebase.json文件:

{
    "hosting": {
        "public": "public",
        "rewrites": [{
            "source": "**",
            "function": "app"
        }]
    },
    "functions": {
        "source": "functions"
    },
    "database": {
        "rules": "database.rules.json"
    },
    "firestore": {
        "rules": "firestore.rules",
        "indexes": "firestore.indexes.json"
    },
    "storage": {
        "rules": "storage.rules"
    },
    "emulators": {
        "auth": {
            "port": 9099
        },
        "functions": {
            "port": 5001
        },
        "firestore": {
            "port": 8080
        },
        "database": {
            "port": 9000
        },
        "hosting": {
            "port": 5000
        },
        "pubsub": {
            "port": 8085
        },
        "storage": {
            "port": 9199
        },
        "ui": {
            "enabled": true
        }
    }
}

此外,如果我尝试使用firebase deploy --only functions它,它也会在它到达时挂起:

i functions: updating Node.js 14 function app(us-central1)

标签: javascriptnode.jsfirebasefunctionexpress

解决方案


推荐阅读