Cloud Functions distribuisce un errore durante lint su Windows: “enoent ENOENT: nessun file o directory”

Seguendo la guida di base della funzione di base di firebase e ottenendo un errore apparentemente semplice una volta che si prova a distribuire con:

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 

Il file package.json esiste esattamente come il tutorial mostra nel mio progetto / functions / package.json. Ho provato a cambiare o stampare l’ambiente RESOURCE_DIR senza successo. Supponendo che sarebbe ambito all’interno dell’ambiente shell NPM.

versione npm: 5.6.0

versione del nodo: 8.9.0

Questo è un problema noto con Firebase CLI 3.17.0 tramite almeno 3.17.3, ma solo su Windows. Puoi sistemarlo sul tuo computer modificando firebase.json nella radice del tuo progetto e sostituendo $RESOURCE_DIR con %RESOURCE_DIR% nei comandi di npm che vedi lì. Il primo è il modo syntax unix per usare una variabile d’ambiente, mentre il secondo è la syntax della shell dei comandi di Windows. Poiché utilizzi Windows, devi utilizzare la syntax di Windows.

Il team sta esaminando i modi per evitare di dover apportare modifiche ai file di configurazione che si utilizzano, in quanto non è davvero conveniente per i team che lavorano su tutta la piattaforma continuare a modificare lo stesso file avanti e indietro.

EDIT: questo problema dovrebbe essere risolto con progetti creati con CLI versione 3.17.5.

Durante la corsa

 firebase init functions 

Io uso questa configurazione

 ? 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 

Quindi se usi Windows

Sostituisci $ RESOURCE_DIR di% RESOURCE_DIR% in firebase.json

Puoi risolvere questo problema accedendo al tuo file firebase.json ed eliminare questa riga contenente RESOURCE_DIR .

Come extra, eseguendo npm –prefix% RESOURCE_DIR% lint come @Deji James ha detto, mi ha fatto dei progressi ma ancora non ha funzionato.

Come suggerimento ho trovato questo https://github.com/firebase/firebase-tools/issues/610

e @merlinnot dice qui Ehi ragazzi, probabilmente avete tutti sth nel vostro predeploy in firebase.json, vero? Elimina quello che hai lì per ora, se non è così importante.

ha funzionato per me PS. prima di decidere di eliminare, ho fatto tutte le cose reinstallare, disinstallare le cose. Solo questo è funzionante.

Oltre agli altri suggerimenti, se si modifica il comando preflight / predeploy da:

 "npm --prefix \"$RESOURCE_DIR\" run lint", OR "npm --prefix \"%RESOURCE_DIR%\" run lint" 

a

 "npm --prefix ./functions run lint" 

il problema sembra essere risolto. Questo lo risolve anche per Windows e Linux.

Per visualizzare maggiori dettagli, vedere questa risposta (e ulteriori thread): https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507