Las funciones de la nube implementan el error durante la pelusa en Windows: “enoent ENOENT: no existe tal archivo o directorio”

Siga la guía de inicio de la función firebase y obtenga un error aparentemente simple una vez que intente implementar 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 

El archivo package.json existe tal como se muestra en mi proyecto / funciones / paquete.json. He intentado cambiar o imprimir el env de RESOURCE_DIR sin éxito. Asumiendo que sería dentro del entorno de shell de NPM.

Versión npm: 5.6.0

versión del nodo: 8.9.0

Este es un problema conocido con Firebase CLI 3.17.0 hasta al menos 3.17.3, pero solo en Windows. Puedes arreglar esto en tu máquina editando firebase.json en la raíz de tu proyecto y reemplazando $RESOURCE_DIR con %RESOURCE_DIR% en los comandos npm que ves allí. El primero es la forma de syntax de Unix para usar una variable de entorno, mientras que el último es la syntax de shell del comando de Windows. Como usa Windows, debe usar la syntax de Windows.

El equipo está estudiando maneras de evitar tener que realizar cambios en los archivos de configuración que utiliza, ya que no es realmente conveniente para los equipos que trabajan en la plataforma seguir cambiando el mismo archivo de un lado a otro.

EDITAR: Este problema debe solucionarse con los proyectos creados con CLI versión 3.17.5.

Cuando se ejecuta

 firebase init functions 

Yo uso esta configuración

 ? 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 

Entonces, si usa Windows

Reemplace $ RESOURCE_DIR por% RESOURCE_DIR% en firebase.json

Puede solucionar esto accediendo a su archivo firebase.json y elimine esta línea que contiene RESOURCE_DIR .

Como un hecho adicional npm –prefix% RESOURCE_DIR% ejecutar pelusa como @Deji James dijo, me hizo un poco de progreso, pero todavía no funcionó.

Como sugerencia encontré esto https://github.com/firebase/firebase-tools/issues/610

y @merlinnot dice aquí Hola chicos, probablemente todos tengáis algo en vuestro predeploy en firebase.json, ¿verdad? Simplemente elimine lo que tiene allí por ahora si no es tan importante.

trabajó para mi. PD. antes de decidir eliminar, he hecho todo reinstalar cosas, desinstalar cosas. Solo esto está trabajado.

Además de las otras sugerencias, si cambia el comando Preflight / predeploy desde:

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

a

 "npm --prefix ./functions run lint" 

el problema parece arreglado. Esto también lo resuelve para Windows y Linux.

Para ver más detalles, consulte esta respuesta (y más información): https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507