служба импорта firebase выдает ошибку - PullRequest
0 голосов
/ 10 мая 2018

Я использую функции Firebase и хочу инициализировать приложение с ключом учетной записи службы json в учетные данные, и я получаю ошибку

Аргумент типа '{"тип": строка; "project_id": строка; "private_key_id": строка; "private_key": строка; «Клиент _...» не может быть назначен параметру типа «строка | ServiceAccount». Тип '{"тип": строка; "project_id": строка; "private_key_id": строка; "private_key": строка; «client _...» не имеет общих свойств с типом «ServiceAccount».

мой файл index.ts

 import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
import {serviceAccount} from './serviceAccount'

console.log(functions.config())
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL:functions.config().firebase
});

export const firestore = admin.firestore();
export const firebase = admin.database();

serviceAccount.ts

export const serviceAccount = {

    "type": "service_account",
    "project_id": "lxxxxxx",
    "private_key_id": "xxxxxx",
    "private_key": "-----BEGIN PRIVATE KEY-----xxxxxxx---END PRIVATE KEY-----\n",
    "client_email": "firebase-axxxxx-9b58b.iaxxxceaccount.com",
    "client_id": "xxxxx",
    "auth_uri": "https://accounts.google.com/o/xxxxx",
    "token_uri": "https://accounts.google.com/o/oxxxxn",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "clixxxxxx": "https://www.googleapis.com/robot/v1/metadataxxxxirebase-adminsdk-uxxxxxxrviceaccount.com"


}

ошибка в этой строке кода

        credential: admin.credential.cert(serviceAccount),

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я тоже это испытал. Решение состоит в том, чтобы привести тип ServiceAccount и привести к этому типу весь объект, импортированный из этого файла json.

import firebase from 'firebase' 
import * as firebaseAdmin from 'firebase-admin' 
import firebaseConfig from '../firebaseConfig.json' 
import firebaseAccountCredentials from '../serviceAccountCredentials.json'

const serviceAccount = firebaseAccountCredentials as admin.ServiceAccount

firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(serviceAccount),
    databaseURL: firebaseConfig.databaseURL 
});
0 голосов
/ 13 мая 2018

Я не очень разбираюсь в TypeScript, но думаю, что это будет временное решение, пока кто-то не предложит лучшее.

let regularObj = {};
Object.assign(regularObj, serviceAccount);

admin.initializeApp({
  credential: admin.credential.cert(regularObj),
  databaseURL: functions.config().firebase
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...