Node.js 在firebase函数管理sdk中找不到服务帐户

Node.js 在firebase函数管理sdk中找不到服务帐户,node.js,firebase,firebase-realtime-database,google-cloud-functions,firebase-admin,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,Firebase Admin,我正在尝试初始化functions文件夹中的firebase admin sdk,以便我的云函数可以使用admin读/写访问权限访问我的数据库,但当我尝试部署我的函数时,返回以下错误 错误:错误分析触发器:找不到模块'/serviceKey.json' 我曾尝试在functions目录中运行npm安装,但没有任何帮助 这是我的package.json文件 { "name": "functions", "description": "Cloud Functions for Firebase

我正在尝试初始化functions文件夹中的firebase admin sdk,以便我的云函数可以使用admin读/写访问权限访问我的数据库,但当我尝试部署我的函数时,返回以下错误

错误:错误分析触发器:找不到模块'/serviceKey.json'

我曾尝试在functions目录中运行npm安装,但没有任何帮助

这是我的package.json文件

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "cors": "^2.8.4",
    "express": "^4.16.3",
    "firebase": "^5.3.1",
    "firebase-admin": "^5.13.1",
    "firebase-functions": "^2.0.2"
  },
  "private": true
}
这是我的index.js文件

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

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

    var firebase = require("firebase");


    var admin = require("firebase-admin");

    require("firebase/auth");
    require("firebase/database");
    //require("firebase/firestore");
    //require("firebase/messaging");
    require("firebase/functions");


    var serviceAccount = require("/serviceKey.json");


    // Initialize the app with a service account, granting admin 
    privileges
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: "https://<database name>.firebaseio.com"
    });

    const displayqr = express();
    const geturl = express();


    displayqr.get('/displayqr', (request, response) => {
         console.log("response sent");
            response.send("testio/qrdisplay.html");
        });




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



     exports.geturl = functions.https.onCall((email) => {// get url 
    function
        });
}
{
const functions=require('firebase-functions');
const express=require('express');
const cors=require('cors')({origin:true});
var firebase=需要(“firebase”);
var admin=require(“firebase admin”);
要求(“firebase/auth”);
要求(“firebase/数据库”);
//要求(“消防基地/消防仓库”);
//要求(“firebase/messaging”);
要求(“火基/功能”);
var servicecomport=require(“/serviceKey.json”);
//使用服务帐户初始化应用程序,授予管理员权限
特权
admin.initializeApp({
凭证:管理员凭证证书(serviceAccount),
数据库URL:“https://.firebaseio.com"
});
const displayqr=express();
const geturl=express();
displayqr.get('/displayqr',(请求、响应)=>{
控制台日志(“已发送响应”);
send(“testio/qrsplay.html”);
});
exports.displayqr=functions.https.onRequest(displayqr);
exports.geturl=functions.https.onCall((电子邮件)=>{//get url
作用
});
}

您将文件放在与
index.js
相同的文件夹中,然后说

var serviceAccount = require("./myfirebaseapp-firebase-adminsdk-my-secret-key.json");

然后,您将
admin.initializeApp
放入与
index.js
相同的文件夹中,并说

var serviceAccount = require("./myfirebaseapp-firebase-adminsdk-my-secret-key.json");

在这之后,您将
管理员初始化app

在我的情况下,我将
服务帐户
文件放在项目的根目录下。它在本地工作,但部署它是一个问题

../service-account.json  (Root)
什么对我有用:

如果是节点应用程序,请将文件从项目根目录移动到功能目录,因为firebase将在不同位置托管文件

./service-account.json  (Inside functions directory)

在我的例子中,
服务帐户
文件位于项目的根目录下。它在本地工作,但部署它是一个问题

../service-account.json  (Root)
什么对我有用:

如果是节点应用程序,请将文件从项目根目录移动到功能目录,因为firebase将在不同位置托管文件

./service-account.json  (Inside functions directory)

将json文件放入为我工作的lib文件夹(functions\lib),我想当我使用typescript时,firebase会从lib文件部署javascript函数,因此它会在lib文件夹中查找json文件

将json文件放入为我工作的lib文件夹(functions\lib),我想当我使用typescript时,firebase将从lib文件部署javascript函数,因此它会在lib文件夹中查找json文件。json是指文件系统根目录中的文件。这很可能是一个错误/打字错误。您可能想要
/serviceKey.json
?如果您想要一个明确的答案,请共享您的项目文件结构,特别是您的服务帐户文件相对于项目其余部分的位置。如果没有这些,我们只能猜测您打算在这里发生什么。同样作为函数用户,也没有理由使用服务帐户JSON文件。您应该只使用应用程序默认凭据:
admin.initializeApp()谢谢,为什么这个点是必要的,它修复了它,但是我不确定为什么
/serviceKey.json
引用了文件系统根目录中的文件。这很可能是一个错误/打字错误。您可能想要
/serviceKey.json
?如果您想要一个明确的答案,请共享您的项目文件结构,特别是您的服务帐户文件相对于项目其余部分的位置。如果没有这些,我们只能猜测您打算在这里发生什么。同样作为函数用户,也没有理由使用服务帐户JSON文件。您应该只使用应用程序默认凭据:
admin.initializeApp()谢谢,为什么圆点是必要的,它修复了它,但我不知道为什么,我错过了最初的周期很高兴能帮助。单击“接受”,这样,如果你得到答案,问题就不会一直冒出来。谢谢,我错过了最初的阶段,很高兴能提供帮助。单击“接受”,这样如果你得到答案,问题就不会一直冒出来。谢谢!你关于Firebase将根目录和函数存储在不同位置的评论真的帮了我大忙。谢谢!你关于Firebase将根目录和函数存储在不同位置的评论真的帮助了我。