Je reçois le message d'erreur suivant (photo ci-dessous) lorsque je déploie ma fonction cloud avec le module firebase
installé.
J'ai essayé d'installer @types/firebase
et firebase
et je reçois la même erreur. Je suis à peu près sûr que cette erreur a quelque chose à voir avec ce module, car lorsque firebase
et @types/firebase
sont désinstallés, la fonction se déploie correctement.
De plus, les fonctions de cloud n'appelant pas encore ce module, je ne pense donc pas que l'erreur réside dans la fonction. J'ai fourni le code pour mon fichier package.json
et mon fichier ts.config
. Une idée de la raison pour laquelle je reçois cette erreur et comment puis-je importer des modules sans obtenir cette erreur? Faites-moi savoir s'il y a un autre fichier qui mérite d'être examiné. Je vous remercie.
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "./node_modules/.bin/tslint -p tslint.json",
"serve": "firebase serve --only functions",
"Shell": "firebase functions:Shell",
"start": "npm run Shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log",
"build": "./node_modules/.bin/tsc"
},
"dependencies": {
"dom": "0.0.3",
"expo-server-sdk": "^2.4.0",
"firebase-admin": "~5.12.1",
"firebase-functions": "^1.0.3",
"TypeScript": "^2.9.2"
},
"devDependencies": {
"eslint": "^4.12.0",
"eslint-plugin-promise": "^3.6.0",
"ts-loader": "^4.4.2"
},
"main": "lib/index.js",
"private": true
}
{
"compilerOptions": {
"lib": ["es6"],
"module": "commonjs",
"noImplicitReturns": true,
"outDir": "lib",
"sourceMap": true,
"target": "es6",
"allowJs": true,
},
"compileOnSave": true,
"include": [
"src"
]
}
Le commentaire de Michael est correct, signalant ceci comme une réponse. J'utilisais firebase
, mais j'aurais dû utiliser firebase-admin
.
Si, comme moi, vous devez réellement utiliser le module client Firebase dans une fonction cloud, le problème, ainsi qu'une solution de contournement, sont décrits dans # 880 :
Une solution consiste à ajouter
"dom"
à l'option de compilation"lib"
dans votretsconfig.json
.Nos packages supposent que les types DOM existent. Le problème est que l'importation
firebase/app
importe les typages de tous les packages.Certains de nos packages (comme la messagerie) ne fonctionnent que dans le navigateur. Ces packages (ou leurs types) ne doivent pas être importés dans un environnement de nœud.
J'ai rencontré ce problème plusieurs fois dans le passé. Vous pouvez essayer d’ajouter ce qui suit à votre tsconfig.json:
"files": [
"node_modules/TypeScript/lib/lib.es6.d.ts"
],
"exclude": [
"node_modules"
]
Donc, votre tsconfig.json complet devrait ressembler à ceci:
{
"compilerOptions": {
"lib": ["es6"],
"module": "commonjs",
"noImplicitReturns": true,
"outDir": "lib",
"sourceMap": true,
"target": "es6"
},
"compileOnSave": true,
"include": [
"src"
],
"files": [
"node_modules/TypeScript/lib/lib.es6.d.ts"
],
"exclude": [
"node_modules"
]
}