web-dev-qa-db-fra.com

Erreur de déploiement des fonctions de cloud lors du peluchage sous Windows: "enoent ENOENT: aucun fichier ni répertoire de ce type"

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

14
Robert Brand

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.

42
Doug Stevenson

Vous pouvez résoudre ce problème en accédant à votre fichier firebase.json et en supprimant cette ligne contenant RESOURCE_DIR.

1
Alayo Hussein

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"
  }
}
1
parth desai

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.

1
SUMIT MONAPARA

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

0
Rvy Pandey

Vous devez changer le fichier firebase.json comme indiqué ici

"npm --prefix functions run lint"
"npm --prefix functions run build"
0
Dinusha Dilanka

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.jsonn en suivant, notez % avant et avant RESOURCE_DIR

{
  "functions": {
    "predeploy": [
      "npm --prefix \"%RESOURCE_DIR%\" run lint",
      "npm --prefix \"%RESOURCE_DIR%\" run build"
    ]
  }
}
0
ahmadalibaloch

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é. 

0
selcuk