Cloud Functions despliega error durante la pelusa en Windows: "enoent ENOENT: no existe tal archivo o directorio"
firebase google-cloud-functions (9)
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 lo muestra el tutorial en mi proyecto / funciones / package.json. Intenté cambiar o imprimir RESOURCE_DIR env sin éxito. Suponiendo que estaría dentro del entorno del shell NPM.
versión npm: 5.6.0
versión de nodo: 8.9.0
Además de las otras sugerencias, si cambia el comando preflight / predeploy de:
"npm --prefix /"$RESOURCE_DIR/" run lint", OR
"npm --prefix /"%RESOURCE_DIR%/" run lint"
a
"npm --prefix ./functions run lint"
El problema parece solucionarse. Esto también lo resuelve tanto para Windows como para Linux.
Para ver más detalles, consulte esta respuesta (y un hilo adicional): https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507
Cambia lo siguiente:
npm --prefix /"$RESOURCE_DIR/" run lint
a
npm --prefix /"%RESOURCE_DIR%/" run lint
en el archivo firebase.json en la estructura principal
{
"functions": {
"predeploy": [
"npm --prefix /"%RESOURCE_DIR%/" run lint"
],
"source": "functions"
}
}
Como extra haciendo npm --prefix% RESOURCE_DIR% ejecutar pelusa como dijo @Deji James, me hizo progresar pero aún no funcionó.
Como sugerencia, encontré este https://github.com/firebase/firebase-tools/issues/610
y @merlinnot dice aquí Hola chicos, probablemente todos tengan algo en su despliegue previo en firebase.json, ¿no? Simplemente elimine lo que tiene allí por ahora si no es tan importante.
trabajó para mi. PD. Antes de decidir eliminar, he hecho todas las cosas de reinstalación, desinstalar cosas. Solo esto se trabaja.
Cuando se ejecuta
firebase init functions
Yo uso esta configuracion
? 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
En Windows, mientras se inicializa el proyecto firebase en CLI usando
firebase init
, en el archivo
firebase.json
, cambie el código a las siguientes
{ "functions": { "predeploy": [ "npm --prefix /"%RESOURCE_DIR%/" run lint" ], "source": "functions" } }
Después de este cambio, intente
firebase deploy --only functions
comando de
firebase deploy --only functions
.
Este es un problema conocido con Firebase CLI 3.17.0 a través de al menos 3.17.3, pero solo en Windows.
Puede arreglar esto en su máquina editando
firebase.json
en la raíz de su proyecto y reemplazando
$RESOURCE_DIR
con
%RESOURCE_DIR%
en los comandos npm que ve allí.
La primera es la forma de sintaxis de Unix para usar una variable de entorno, mientras que la segunda es la sintaxis del shell de comandos de Windows.
Como está utilizando Windows, debe usar la sintaxis de Windows.
El equipo está buscando formas de evitar tener que hacer cambios en los archivos de configuración que usa, ya que no es realmente conveniente para los equipos que trabajan en toda la plataforma seguir cambiando el mismo archivo de un lado a otro.
EDITAR: Este problema debe solucionarse con proyectos creados con CLI versión 3.17.5.
Para ubuntu necesita cambiar
firebase.json
a siguiente, observe
$
antes de
RESOURCE_DIR
{
"functions": {
"predeploy": [
"npm --prefix /"$RESOURCE_DIR/" run lint",
"npm --prefix /"$RESOURCE_DIR/" run build"
]
}
}
para Windows 10 necesita cambiar
firebase.json
n a continuación, observe
%
después y antes de
RESOURCE_DIR
{
"functions": {
"predeploy": [
"npm --prefix /"%RESOURCE_DIR%/" run lint",
"npm --prefix /"%RESOURCE_DIR%/" run build"
]
}
}
Puede solucionar esto accediendo a su archivo
firebase.json
y eliminar esta línea que contiene
RESOURCE_DIR
.
Tienes que cambiar el archivo
firebase.json
como se muestra aquí
"npm --prefix functions run lint"
"npm --prefix functions run build"