Suivre le guide de démarrage de la fonction firebase et obtenir une erreur apparemment simple une fois que vous tentez de déployer avec:
firebase deploy --only functions
i deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\Beat\leginformant\$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open
'C:\Users\Beat\leginformant\$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
Le fichier package.json existe exactement comme le didacticiel l'illustre dans mon projet/functions/package.json . J'ai essayé de modifier ou d'imprimer le fichier d'environnement RESOURCE_DIR sans succès. En supposant qu'il soit couvert à l'intérieur de l'environnement NPM Shell.
version npm: 5.6.0
version du noeud: 8.9.0
Il s'agit d'un problème connu avec Firebase CLI 3.17.0 à au moins 3.17.3, mais uniquement sous Windows. Vous pouvez résoudre ce problème sur votre ordinateur en modifiant firebase.json
à la racine de votre projet et en remplaçant $RESOURCE_DIR
par %RESOURCE_DIR%
dans les commandes npm que vous voyez à cet endroit. Le premier est la manière unix d'utiliser une variable d'environnement, tandis que le second est la syntaxe de commande Windows Shell. Puisque vous utilisez Windows, vous devez utiliser la syntaxe Windows.
L’équipe cherche des moyens d’empêcher d’avoir à modifier les fichiers de configuration que vous utilisez, car il n’est pas pratique pour les équipes qui travaillent sur plusieurs plates-formes de modifier constamment le même fichier.
EDIT: Ce problème devrait être résolu avec les projets créés avec CLI version 3.17.5.
Vous pouvez résoudre ce problème en accédant à votre fichier firebase.json
et en supprimant cette ligne contenant RESOURCE_DIR
.
Lors de l'exécution
firebase init functions
J'utilise cette configuration
? What language would you like to use to write Cloud Functions? JavaScript
//TypeScript doesn't work
? Do you want to use ESLint to catch probable bugs and enforce style? Yes
//If you don't you will get a missing file lint
? File functions/package.json already exists. Overwrite? Yes
? Do you want to install dependencies with npm now? Yes
//Why not
Alors si utiliser des fenêtres
Remplacez $ RESOURCE_DIR par% RESOURCE_DIR% dans firebase.json
Changer ce qui suit:
npm --prefix \"$RESOURCE_DIR\" run lint
à
npm --prefix \"%RESOURCE_DIR%\" run lint
dans le fichier firebase.json dans la structure principale
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
],
"source": "functions"
}
}
Sous Windows, tout en initialisant le projet firebase dans la CLI à l'aide de firebase init
, dans le fichier firebase.json
, modifiez le code comme indiqué ci-dessous{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
],
"source": "functions"
}
}
Après cette modification, essayez la commande firebase deploy --only functions
.
Outre les autres suggestions, si vous modifiez la commande preflight/predeploy à partir de:
"npm --prefix \"$RESOURCE_DIR\" run lint", OR
"npm --prefix \"%RESOURCE_DIR%\" run lint"
à
"npm --prefix ./functions run lint"
le problème semble être résolu. Cela résout également le problème pour Windows et Linux.
Pour plus de détails, veuillez consulter cette réponse (et un fil supplémentaire): https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507
Vous devez changer le fichier firebase.json
comme indiqué ici
"npm --prefix functions run lint"
"npm --prefix functions run build"
Pour Ubuntu, vous devez changer firebase.json
en suivant, notez $
avant RESOURCE_DIR
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
pour Windows 10, vous devez changer firebase.json
n en suivant, notez %
avant et avant RESOURCE_DIR
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
En tant que membre supplémentaire, npm --prefix% RESOURCE_DIR% a lancé lint, comme l'a dit @Deji James, mais il n'a toujours pas fonctionné.
En guise de suggestion, j'ai trouvé ceci https://github.com/firebase/firebase-tools/issues/610
et @merlinnot dit ici Hé les gars, vous avez probablement déjà droit à votre prédécesseur dans firebase.json, n'est-ce pas? Juste supprimer ce que vous avez là pour le moment si ce n'est pas si important.
travaillé pour moi ... PS. avant de décider de supprimer, j'ai tout réinstallé, désinstallé. Seulement cela est travaillé.