Firebase-tools: "functions: Falha ao carregar o código-fonte das funções. Verifique se você tem o SDK mais recente até..."

Criado em 19 jan. 2018  ·  60Comentários  ·  Fonte: firebase/firebase-tools

Informação da versão

> firebase --version
3.17.1
> node --version
v6.12.3
> npm --version
5.6.0

Passos para reproduzir

> git clone https://github.com/firebase/functions-samples.git
> cd functions-samples/authenticated-json-api/functions/
> npm install

> [email protected] install /Users/karl/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

[grpc] Success: "/Users/karl/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/grpc/src/node/extension_binary/node-v48-darwin-x64-unknown/grpc_node.node" is installed via remote

> [email protected] postinstall /Users/karl/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/protobufjs
> node scripts/postinstall

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] requires a peer of firebase-admin@~4.2.1 but none is installed. You must install peer dependencies yourself.

added 354 packages in 11.832s
> firebase use my-project
Now using project my-project
> firebase serve --only functions

=== Serving from '/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api'...

i  functions: Preparing to emulate functions.
⚠  functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
⚠  functions: Error from emulator. FirebaseError: Error occurred while parsing your function triggers. Please ensure you have the latest firebase-functions SDK by running "npm i --save firebase-functions@latest" inside your functions folder.

Error: Firebase config variables are not available. Please use the latest version of the Firebase CLI to deploy this function.
    at init (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:51:15)
    at Object.config (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:29:9)
    at Object.<anonymous> (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/index.js:27:31)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)

Comportamento real

> firebase serve --only functions --debug
[2018-01-19T03:30:49.455Z] ----------------------------------------------------------------------
[2018-01-19T03:30:49.459Z] Command:       /usr/local/Cellar/node@6/6.12.3/bin/node /usr/local/bin/firebase serve --only functions --debug
[2018-01-19T03:30:49.460Z] CLI Version:   3.17.1
[2018-01-19T03:30:49.460Z] Platform:      darwin
[2018-01-19T03:30:49.460Z] Node Version:  v6.12.3
[2018-01-19T03:30:49.460Z] Time:          Thu Jan 18 2018 22:30:49 GMT-0500 (EST)
[2018-01-19T03:30:49.461Z] ----------------------------------------------------------------------

[2018-01-19T03:30:49.476Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2018-01-19T03:30:49.476Z] > authorizing via signed-in user
[2018-01-19T03:30:49.479Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/my-project

 Thu Jan 18 2018 22:30:49 GMT-0500 (EST)
[2018-01-19T03:30:49.855Z] <<< HTTP RESPONSE 200 server=nginx, date=Fri, 19 Jan 2018 03:30:49 GMT, content-type=application/json; charset=utf-8, content-length=126, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
[2018-01-19T03:30:49.856Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/database/my-project/tokens

 Thu Jan 18 2018 22:30:49 GMT-0500 (EST)
[2018-01-19T03:30:50.482Z] <<< HTTP RESPONSE 200 server=nginx, date=Fri, 19 Jan 2018 03:30:50 GMT, content-type=application/json; charset=utf-8, content-length=267, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store

=== Serving from '/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api'...

i  functions: Preparing to emulate functions.
[2018-01-19T03:30:51.081Z] Fetching environment
[2018-01-19T03:30:51.082Z] >>> HTTP REQUEST GET https://appengine.googleapis.com/v1/apps/my-project

 Thu Jan 18 2018 22:30:51 GMT-0500 (EST)
[2018-01-19T03:30:51.083Z] >>> HTTP REQUEST GET https://apikeys.googleapis.com/v1/projects/my-project/apiKeys

 Thu Jan 18 2018 22:30:51 GMT-0500 (EST)
[2018-01-19T03:30:51.569Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 19 Jan 2018 03:30:51 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2018-01-19T03:30:51.663Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 19 Jan 2018 03:30:51 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2018-01-19T03:30:51.664Z] Starting @google-cloud/functions-emulator
[2018-01-19T03:30:53.220Z] Parsing function triggers
⚠  functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
⚠  functions: Error from emulator. FirebaseError: Error occurred while parsing your function triggers. Please ensure you have the latest firebase-functions SDK by running "npm i --save firebase-functions@latest" inside your functions folder.

Error: Firebase config variables are not available. Please use the latest version of the Firebase CLI to deploy this function.
    at init (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:51:15)
    at Object.config (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:29:9)
    at Object.<anonymous> (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/index.js:27:31)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)

É muito estranho, porque em outros projetos, firebase serve --only functions congela, e eu tentei um monte de outras amostras. Não funciona em nenhum deles.

Ele ainda não funciona para funções que já implantei.

Comentários muito úteis

Tente executar npm run serve de dentro do diretório de funções em vez de firebase serve --only functions , isso pode ou não funcionar dependendo de como seu arquivo package.json está configurado.

Todos 60 comentários

Tente executar npm run serve de dentro do diretório de funções em vez de firebase serve --only functions , isso pode ou não funcionar dependendo de como seu arquivo package.json está configurado.

Infelizmente, não tenho um package.json configurado para isso.

> npm run serve
npm ERR! Darwin 17.3.0
npm ERR! argv "/Users/alchemist/.nvm/versions/node/v6.11.5/bin/node" "/Users/karl/.nvm/versions/node/v6.11.5/bin/npm" "run" "serve"
npm ERR! node v6.11.5
npm ERR! npm  v3.10.10

npm ERR! missing script: serve
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/npm-debug.log

Você pode me indicar um?

É assim que o meu fica depois de um novo firebase init : https://gist.github.com/dylanjmcdonald/6c033b476e863efaea3eccc0b3137772

Consegui contornar esse erro fazendo o downgrade de firebase-tools para 3.16.0, já que o erro começou depois que atualizei para 3.17.1

História mais longa

Eu me deparei com esse erro pela primeira vez no meu corredor de CI, porque eu estava instalando a versão mais recente de firebase-tools para implantação. Da noite para o dia, minhas implantações pararam de funcionar. Eles começaram a funcionar novamente depois que eu atualizei firebase-admin e firebase-functions .

Mas então meu ambiente local parou de funcionar. Eu ainda podia implantar, mas não podia servir a funções. Tentei desinstalar firebase-tools e reinstalar... E todas as variações que consegui (limpando o cache, usando o NPM mais recente, usando 6.11.5, usando Yarn, etc.). Sem sorte.

Por fim, decidi reverter tudo para as versões que estavam funcionando antes e congelei a versão usada no meu script de CI (em vez de usar a mais recente) e agora os dois ambientes funcionam de forma consistente.

Eu vi diferentes variações desse problema com diferentes soluções possíveis que datam de alguns meses atrás. Talvez seja uma regressão? Algum problema subjacente obscuro?

BTW: estou executando o macOS High Sierra 10.13.2 localmente e a imagem node:latest do Docker para meu executor de CI no GitLab, se isso ajudar.

PS: Na minha experiência, npm run dev roda firebase serve --only functions internamente.

@rafasoares : obrigado, posso confirmar que o downgrade para 3.16.0 corrigiu o erro!

npm install -g [email protected]

Estou usando o macOS High Sierra 10.13.2 também, mas estou usando o nó v6.11.5 instalado por meio nvm .

@The-Alchemist feliz por poder ajudar.

Eu tentei ambos com o nó mais recente instalado via brew (9.x) e 6.11.5 instalado através do nvm. Ele estava funcionando antes com o nó mais recente (com o aviso de versão do nó do GCP, no entanto).

Olá a todos, o firebase-tools mais recente (3.17.1) também requer o SDK firebase-functions mais recente, portanto, a melhor maneira de resolver os problemas seria executar "npm i --save firebase -functions@latest " dentro da pasta de funções antes de implantar ou servir, como sugere a mensagem de erro.

@laurenzlong você leu meu comentário acima? Foi a primeira coisa que tentei. Depois disso, consegui firebase deploy --only functions , mas não firebase serve --only functions .

E tentei todos os tipos de estratégias de limpeza que pude inventar. Eu até deletei minha cópia de trabalho e puxei tudo do Git do zero.

@rafasoares Desculpas, perdi essa parte. Vou investigar isso agora.

Impressionante! Obrigado!

v3.17.2 já foi lançado e deve ter corrigido o problema, por favor me avise se isso não acontecer. Obrigado por relatar!

Apenas tentei v3.17.2, funcionou para mim!

Não funcionou para mim. Consegui fazê-lo funcionar em um projeto em branco, mas não consegui fazer meu projeto atual funcionar.

Então fui cavar. Quais sao as diferenças entre os dois?

Consegui identificar o problema. Ele quebra quando eu adiciono este pedaço de código:

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase); // <-- Specifically, this line

Se eu remover o bit de inicialização, posso servir as funções. No entanto, não posso usar o Firestore.

Atualização: Se eu substituir a chamada functions.config().firebase pelo seguinte JSON, funciona:

{
  databaseURL: 'https://[PROJECT_NAME].firebaseio.com',
  storageBucket: '[PROJECT_NAME].appspot.com',
  apiKey: '[API KEY]',
  authDomain: '[PROJECT_NAME].firebaseapp.com',
  projectId: '[PROJECT_NAME]',
  credential: admin.credential.applicationDefault()
}

Esse JSON foi a saída de functions.config().firebase ao usar [email protected] (com exceção do bit credential , que obtive dos documentos.

Eu não tentei implantar com este código, no entanto.

@rafasoares fiz downgrade da dependência google-cloud/functions-emulator, essa é a diferença. Tente "npm uninstall -g firebase-tools & npm i -g firebase-tools". Dependendo da versão do npm que você possui, às vezes ele não faz downgrade das dependências, a menos que você faça uma desinstalação primeiro.

@rafasoares Parece que eu errei o versionamento semver, acho que consertei no #618, você pode tentar usar esse branch?

npm install -g https://github.com/firebase/firebase-tools.git#laurenzlong -patch-1

@laurenzlong

Parece que eu errei o versionamento semver, acho que consertei no #618, você pode tentar usar esse branch?

Tive o mesmo problema do @rafasoares , e tentei npm install -g https://github.com/firebase/firebase-tools.git#laurenzlong-patch-1 , mas o problema continua.

Por npm install -g [email protected] , o problema está resolvido.

Me desculpe, eu tenho brincado com o Yarn e o NPM tentando fazer com que eles baixem a versão correta, eu provavelmente estraguei meu ambiente haha.

Mas sim, https://github.com/firebase/firebase-tools.git#laurenzlong -patch-1 ainda me dá o erro, mesmo que @google-cloud/[email protected] seja a versão instalada.

@mono0926 @rafasoares Que tal isso?
npm install -g https://github.com/firebase/firebase-tools.git#ll -fixemu

Obrigado pela paciência e ajuda!

@laurenzlong

npm install -g https://github.com/firebase/firebase-tools.git#ll -fixemu

Isso ainda me dá o erro, infelizmente :(

que tal npm uninstall -g firebase-tools && npm install -g https://github.com/firebase/firebase-tools.git#ll-fixemu

@laurenzlong

que tal npm uninstall -g firebase-tools && npm install -g https://github.com/firebase/firebase-tools.git#ll -fixemu

Eu já tentei isso.

Aparentemente https://github.com/firebase/firebase-tools.git#ll -fixemu corrige para mim.

$ yarn global remove firebase-tools
yarn global v1.3.2
[1/2] Removing module firebase-tools...
[2/2] Regenerating lockfile and installing missing dependencies...
success Uninstalled packages.
✨  Done in 3.91s.
$ yarn global add https://github.com/firebase/firebase-tools.git\#ll-fixemu
yarn global v1.3.2
[1/4] 🔍  Resolving packages...
warning https://github.com/firebase/firebase-tools.git#ll-fixemu > universal-analytics > [email protected]: Use uuid module instead
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Installed "[email protected]" with binaries:
      - firebase
✨  Done in 11.73s.
$ firebase --version
3.17.2
$ firebase serve --only functions

=== Serving from '/Users/[USERNAME]/dev/projects/[PROJECT NAME]'...

i  functions: Preparing to emulate functions.
✔  functions: createUrl: http://localhost:5000/[PROJECT NAME]/us-central1/createUrl
✔  functions: getUrl: http://localhost:5000[PROJECT NAME]us-central1/getUrl

Atualmente estou usando o nó v6.11.5. @ mono0926 talvez isso tenha algo a ver com isso?

@rafasoares

Atualmente estou usando o nó v6.11.5. @ mono0926 talvez isso tenha algo a ver com isso?

Estou usando a mesma versão do node 🤔

@mono0926 sim, eu estava apenas supondo. Acabei de tentar usar o mais recente e funcionou.

Tente fazer uma limpeza completa de suas dependências globais e uma limpeza de cache (também, tente reconstruir as dependências locais do seu projeto). Eu fiz isso várias vezes hoje enquanto tentava resolver esse problema, talvez tenha ajudado.

@rachelmyers @laurenzlong

Percebi que o detalhe do erro mudou, depois de tentar npm install -g https://github.com/firebase/firebase-tools.git#ll-fixemu .

E, o erro ocorreu no meu código, e eu modifiquei, e depois disso o erro foi resolvido 👍

Se eu usar [email protected] , o erro não ocorre sem modificar meu código.
Então, eu vou te dizer mais tarde, eu investiguei os detalhes do problema.

@mono0926 Você se importa de compartilhar conosco o que você mudou no seu código? Foi algo relacionado ao Firebase?

@rachelmyers @laurenzlong

Eu investiguei isso e descobri o ponto.

Com este código,

import * as functions from 'firebase-functions';
import * as util from 'util';
console.error(`environment: ${util.inspect(functions.config().environment.project_id)}`);

O erro ocorre:

TypeError: Cannot read property 'project_id' of undefined

Mas com este código,

import * as functions from 'firebase-functions';
import * as util from 'util';
console.error(`environment: ${util.inspect(functions.config().environment)}`);

Este log é impresso:

info: environment: { project_id: 'development' }

Por que não consigo acessar project_id de functions.config().environment na versão mais recente?
Consegui acessar project_id de functions.config().environment abaixo [email protected] .

Eu sei que este é outro problema com esta questão.

Você se importa de compartilhar conosco o que você mudou no seu código? Foi algo relacionado ao Firebase?

Eu corrijo o problema codificando temporariamente o valor project_id , então gostaria que você corrigisse o problema.

Quando implantei as funções, o problema não ocorre.

@The-Alchemist I Confirme para mim também: o downgrade para 3.16.0 corrigiu o erro!

npm install -g [email protected]

Estou usando o macOS High Sierra 10.13.2 também e o nó v8.9.4 instalado por seu instalador com permissão fixa: https://docs.npmjs.com/getting-started/fixing-npm-permissions.

Sem problemas com [email protected] no Windows.

Eu recebo :

+ [email protected]
updated 1 package in 50.957s
(xenial)marcus<strong i="6">@localhost</strong>:~/app$  firebase serve --only functions

=== Serving from '/home/marcus/app'...

⚠  functions: Cannot start emulator. Error: Cannot find module '/usr/lib/node_modules/firebase-tools/node_modules/grpc/src/node/extension_binary/grpc_node.node'

Marcus: --only functions (plural)

No sábado, 20 de janeiro de 2018, 12h44 Marcus Hitchins [email protected]
escreveu:

Eu recebo :

=== Exibindo de '/home/marcus/app'...

Erro: não é possível entender quais destinos implantar. Verifique se você especificou destinos válidos se usou o sinalizador --only ou --except. Caso contrário, verifique seu firebase.json para garantir que seu projeto seja inicializado para os recursos desejados.


Você está recebendo isso porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/firebase/firebase-tools/issues/609#issuecomment-359200751 ,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AAAD_tJH6ez89mjEZVdJbPVMDqeKym76ks5tMlAQgaJpZM4Rj8M0
.

@mono0926 Nunca suportamos valores de configuração personalizados dentro do emulador, você precisa executar "firebase functions:config:get > .runtimeconfig.json" dentro de sua pasta de funções para que as variáveis ​​sejam armazenadas em .runtimeconfig.json e possam ser acessadas pelo emulador.

@marcus7777 Acho que este é um problema separado, capturado em https://github.com/firebase/firebase-tools/issues/442

Estou encerrando este problema agora, pois o erro relatado originalmente foi corrigido na v.3.17.3

É incrível a rapidez com que isso foi resolvido. Trabalho incrível @laurenzlong. 👏

@laurenzlong

você precisa executar "firebase functions:config:get > .runtimeconfig.json" dentro de sua pasta de funções para que as variáveis ​​sejam armazenadas em .runtimeconfig.json e possam ser acessadas pelo emulador.

Eu vejo. Esqueci de escrever esta informação.
Isso é functions/.runtimeconfig.json :

{
  "environment": {
    "project_id": "development"
  }
}

Consegui acessar functions.config().environment. project_id na versão 3.16.0, mas não consigo acessar a versão mais recente (v3.17.3).

@mono0926 Você pode abrir um novo problema para isso? E também inclua qual versão das funções do firebase você está usando?

@laurenzlong

Você pode abrir um novo tópico para isso? E também inclua qual versão das funções do firebase você está usando?

Ok, abri um problema 👍 : https://github.com/firebase/firebase-tools/issues/629

basta atualizar para 3.17.4 e ainda obter:

sudo npm install -g firebase-tools
[sudo] password for marcus: 
npm WARN deprecated [email protected]: Use uuid module instead
/usr/bin/firebase -> /usr/lib/node_modules/firebase-tools/bin/firebase
+ [email protected]
updated 4 packages in 555.594s
(xenial)marcus<strong i="6">@localhost</strong>:~$ cd app/
(xenial)marcus<strong i="7">@localhost</strong>:~/app$ firebase serve --only functions

=== Serving from '/home/marcus/Downloads/deko-app'...

⚠  functions: Cannot start emulator. Error: Cannot find module '/usr/lib/node_modules/firebase-tools/node_modules/grpc/src/node/extension_binary/grpc_node.node'
(xenial)marcus<strong i="8">@localhost</strong>:~/app$

e tentou #442 mas sem sorte.
obs. rodar em xenial (Linux)

@ marcus7777 o problema que você está enfrentando não está relacionado a esse problema. Tente remover o firebase-tools e reinstalá-lo. Se não funcionar, abra um novo problema.

Também tive sucesso ao excluir o estado local do emulador:

$HOME/.config/configstore/@google-cloud/functions-emulator/.functions.json

e arquivos semelhantes.
obrigado

Olá,

Também estou tendo esse problema com [email protected].

Conforme observado por @rafasoares o problema aparece se eu adicionar esta linha:

admin.initializeApp(functions.config().firebase);

Este é o erro que estou recebendo:

➜  functions yarn run shell
yarn run v1.5.1
$ yarn run build && firebase experimental:functions:shell
$ tsc
i  functions: Preparing to emulate functions.
⚠  functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
⚠  functions: Error from emulator. Error occurred while parsing your function triggers. Please ensure you have the latest firebase-functions SDK by running "npm i --save firebase-functions@latest" inside your functions folder.

Error: Firebase config variables are not available. Please use the latest version of the Firebase CLI to deploy this function.
    at init (/Volumes/HDD/carlosbernal/Dropbox/Wanttu/Futbol/backend/functions/node_modules/firebase-functions/lib/config.js:55:15)
    at Object.config (/Volumes/HDD/carlosbernal/Dropbox/Wanttu/Futbol/backend/functions/node_modules/firebase-functions/lib/config.js:29:9)
    at Object.<anonymous> (/Volumes/HDD/carlosbernal/Dropbox/Wanttu/Futbol/backend/functions/lib/index.js:5:35)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
No functions emulated.
✨  Done in 11.64s.

Além disso, quando faço downgrade para [email protected] consigo acessar o shell, mas aparece um novo erro:

➜  functions yarn run shell
yarn run v1.5.1
$ yarn run build && firebase experimental:functions:shell
$ tsc
i  functions: Preparing to emulate functions.
⚠  functions: Error from emulator. TypeError: Cannot read property 'split' of undefined
✔  functions: addMessage
firebase >

@laurenzlong Talvez esteja faltando algo?

@BernalCarlos Como a mensagem de erro sugere, verifique se você está na versão mais recente do firebase-functions. Execute o seguinte em seu diretório de funções: `npm i --save firebase -functions@latest '

Depois, seu functions/package.json deve ter o firebase-functions 0.8.1

@laurenzlong Eu já tenho a versão mais recente do firebase-functions. Este é o meu package.json:

{
  "name": "functions",
  "scripts": {
    "lint": "tslint --project tsconfig.json",
    "build": "tsc",
    "serve": "yarn run build && firebase serve --only functions",
    "shell": "yarn run build && firebase experimental:functions:shell",
    "start": "yarn run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "main": "lib/index.js",
  "dependencies": {
    "firebase-admin": "^5.9.1",
    "firebase-functions": "^0.8.1"
  },
  "devDependencies": {
    "tslint": "^5.9.1",
    "typescript": "^2.7.2"
  },
  "private": true
}

No yarn.lock eu também tenho isso:

...

firebase-functions@^0.8.1:
  version "0.8.1"
  resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-0.8.1.tgz#a42fe6d243862c406af16e1c16b1d0a81ec24c03"
  dependencies:
    "@types/express" "^4.0.33"
    "@types/jsonwebtoken" "^7.1.32"
    "@types/lodash" "^4.14.34"
    "@types/sha1" "^1.1.0"
    express "^4.0.33"
    jsonwebtoken "^7.1.9"
    lodash "^4.6.1"
    sha1 "^1.1.1"

...

firebase-admin@^5.9.1:
  version "5.9.1"
  resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-5.9.1.tgz#1edf6248d014063f0e473f84fe9d63df18e53807"
  dependencies:
    "@firebase/app" "^0.1.10"
    "@firebase/database" "^0.1.11"
    "@google-cloud/firestore" "^0.12.0"
    "@google-cloud/storage" "^1.6.0"
    "@types/google-cloud__storage" "^1.1.7"
    "@types/node" "^8.0.53"
    faye-websocket "0.9.3"
    jsonwebtoken "8.1.0"
    node-forge "0.7.1"

Mas o problema ainda está presente.

Obrigado por compartilhar seu package.json, você pode me dizer qual é a estrutura de diretórios do seu projeto? Ainda não oferecemos suporte a repositórios mono, portanto, é necessário haver uma pasta functions/node_modules/firebase-functions.

Claro @laurenzlong esta estrutura de diretórios do meu projeto, é bem grande por causa da pasta node_modules:

estrutura de pastas.txt

Com [email protected] (ou seja, Firebase CLI) o problema aparece novamente, ele não está relacionado diretamente a funções, mas se você reverter para 3.17.4, a emulação funcionará.
Abri o problema correspondente no repositório firebase-tools: firebase/firebase-tools#691

@Rulsky com [email protected] , ele falha com um erro diferente para uma função muito simples:

// index.ts

import * as fbAdmin from "firebase-admin";
import * as fbFunctions from "firebase-functions";

fbAdmin.initializeApp(fbFunctions.config().firebase);

export const addMessage = fbFunctions.https.onRequest((request, response) => {
    const original = request.query.text;
    response.send(original);
});

Erro:

➜  functions yarn run shell
yarn run v1.5.1
$ yarn run build && firebase experimental:functions:shell
$ tsc
i  functions: Preparing to emulate functions.
⚠  functions: Failed to emulate addMessage
No functions emulated.
✨  Done in 12.71s.

Também notei que um arquivo de log é criado quando a CLI do Firebase está em execução, mas esse arquivo é excluído imediatamente depois. Existe uma maneira de evitar que este arquivo de log seja excluído?

@BernalCarlos você colocou a chave de administração do serviço no diretório functions do seu projeto? E fez uma exportação da variável global GOOGLE_APPLICATION_CREDENTIALS no seu shell?
é crucial fazê-lo funcionar https://firebase.google.com/docs/functions/local-emulator

Na verdade, você não precisa definir GOOGLE_APPLICATION_CREDENTIALS se não estiver usando a autenticação do Firebase ou outras APIs do Google. Então @BernalCarlos , acho que seu problema é o mesmo que https://github.com/firebase/firebase-tools/issues/691 , para o qual fiz uma correção e vinculei nesse problema.

Tenho um projeto limpo apenas com a função que a CLI cria e não está funcionando quando incluo const app = admin.initializeApp(functions.config().firebase); . O projeto foi montado com
```
"dependências": {
"firebase-admin": "~5.8.1",
"firebase-functions": "^0.8.1"
}
````

@ Jhony0311 você provavelmente também é afetado pelo # 691

Eu posso usar firebase deploy --only functions mas não firebase serve --only functions .

Ele permanece carregando após executar "npm run serve",

i funções: Preparando para emular funções.
Aviso: você está usando o Node.js v10.5.0, mas o Google Cloud Functions é compatível apenas com a v6.11.5.
⚠ funções: Falha ao emular getSomeData
i funções: Nenhuma função HTTPS encontrada. Use firebase functions:shell se quiser emular outros tipos de funções.

firebase version: 3.19.3

Este é o meu código:

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

exports.getSomeData = functions.https.onRequest((req, res) => {
  admin.firestore().doc('feedback/d8pGxmML5ZKLYEy5jyhm').get()
    .then(doc => res.send(doc.data()))
    .catch(err => res.status(500).send(err));
});

Alguma sugestão?

Oi, problema com o nó 10
Use a versão mais antiga. Versão 8, por exemplo.
Em 4 de julho de 2018, 01:46 +0200, Nicolas Sturm [email protected] , escreveu:

Eu posso usar o firebase deploy --only functions , mas nenhuma função firebase serve --only .
Ele permanece carregando após executar "npm run serve",
i funções: Preparando para emular funções.
Aviso: você está usando o Node.js v10.5.0, mas o Google Cloud Functions é compatível apenas com a v6.11.5.
⚠ funções: Falha ao emular getSomeData
i funções: Nenhuma função HTTPS encontrada. Use firebase functions:shell se quiser emular outros tipos de funções.
versão do Firebase: 3.19.3
Este é o meu código:
'usar estrito';

funções const = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

export.getSomeData = functions.https.onRequest((req, res) => {
admin.firestore().doc('feedback/d8pGxmML5ZKLYEy5jyhm').get()
.then(doc => res.send(doc.data()))
.catch(err => res.status(500).send(err));
});
Alguma sugestão?

Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub ou silencie a conversa.

Caso ajude outras pessoas, eu estava tentando usar fulfillment s do Dialogflow e editar e testar o código localmente. Eu tive esse erro. O que resolveu foi parecido com o que o @rafasoares disse.

Para resolver isso, tive que copiar o package.json Dialogflow usado em vez do firebase init gerado. Parece ser um problema de versão.

Eu tenho exatamente o mesmo problema. Acho que vamos deixar de usar variáveis ​​ambientais em nossos vários estágios de implantação e usar apenas um arquivo de configuração JSON. Eu adoraria ver uma correção, executar o npm não faz absolutamente nada para corrigir isso.

No meu caso, consertei o bug executando firebase deploy primeiro, depois executei firebase serve e o bug foi embora

Atualizei todas as ferramentas do firebase, firebase-admin, firebase-functions para a mais recente

"dependencies": {
    "firebase-admin": "^7.3.0",
    "firebase-functions": "^2.3.0",
    "googleapis": "^32.0.0",
    "mailgun-js": "^0.18.0",
    "moment": "^2.20.1",
    "request": "^2.81.0",
    "request-promise": "^4.2.1"
  },
  "private": true,
  "devDependencies": {
    "firebase-functions-test": "^0.1.2",
    "firebase-tools": "^6.8.0",
    "mocha": "^5.2.0",
    "rewire": "^4.0.1",
    "sinon": "^6.0.0",
    "underscore": "^1.9.1"
  },

No entanto, ainda vejo esse erro quando quero executar o shell de funções do Firebase

i  functions: Preparing to emulate functions.
⚠  functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
⚠  functions: Error from emulator. Error occurred while parsing your function triggers.

@Randyanto Olá, não posso lhe dar uma resposta clara, mas posso lhe dar algumas pistas. Eu também tenho o mesmo erro. No meu caso, não consegui trabalhar bem require('firebase') . Então, eu tentei fazer o downgrade ' [email protected] '.
Eu fiz npm install --save [email protected] . Finalmente, eu poderia resolver este problema.
Talvez você tenha o problema de se relacionar com o Firebase ou outras funções.
Confira as dependências de cada versão que você tem. Boa sorte.

Esta página foi útil?
0 / 5 - 0 avaliações