Cloud Functions implanta erro durante o lint no Windows: “enoent ENOENT: nenhum arquivo ou diretório desse tipo”




firebase google-cloud-functions (6)

Seguir o guia de primeiros passos da função Firebase e obter um erro aparentemente simples ao tentar implantar com:

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

O arquivo package.json existe exatamente como o tutorial mostra no meu projeto / functions / package.json. Já tentei alterar ou imprimir o env RESOURCE_DIR sem sucesso. Assumindo que seria escopo dentro do ambiente de shell NPM.

versão npm: 5.6.0

versão do nó: 8.9.0


Além das outras sugestões, se você alterar o comando preflight / predeploy de:

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

para

"npm --prefix ./functions run lint"

a questão parece ser corrigida. Isso também resolve isso para o Windows e o Linux.

Para ver mais detalhes, consulte esta resposta (e mais tópicos): https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507


Altere o seguinte:

npm --prefix \"$RESOURCE_DIR\" run lint

para

npm --prefix \"%RESOURCE_DIR%\" run lint

no arquivo firebase.json na estrutura principal

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

Este é um problema conhecido com o Firebase CLI 3.17.0 até pelo menos 3.17.3, mas apenas no Windows. Você pode corrigir isso em sua máquina editando firebase.json na raiz do seu projeto e substituindo $RESOURCE_DIR por %RESOURCE_DIR% nos comandos npm que você vê lá. A primeira é a maneira de sintaxe unix para usar uma variável de ambiente, enquanto a última é a sintaxe do shell de comando do Windows. Como você está usando o Windows, precisa usar a sintaxe do Windows.

A equipe está procurando formas de evitar a necessidade de fazer alterações nos arquivos de configuração que você usa, já que não é realmente conveniente que as equipes que trabalham na plataforma continuem alterando o mesmo arquivo de um lado para outro.

EDIT: este problema deve ser corrigido com projetos criados com o CLI versão 3.17.5.


No Windows, ao inicializar o Firebase Project na CLI usando firebase init , no arquivo firebase.json , altere o código para conforme as { "functions": { "predeploy": [ "npm --prefix \"%RESOURCE_DIR%\" run lint" ], "source": "functions" } } abaixo { "functions": { "predeploy": [ "npm --prefix \"%RESOURCE_DIR%\" run lint" ], "source": "functions" } } Após essa alteração, tente o comando firebase deploy --only functions .


Quando correr

firebase init functions

Eu uso essa configuração

? 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

Então, se usar janelas

Substitua $ RESOURCE_DIR por% RESOURCE_DIR% em firebase.json


Você pode corrigir isso acessando seu arquivo firebase.json e exclua essa linha contendo RESOURCE_DIR .





firebase-cli