O ambiente de execução Node.js
A Função do Cloud é executada em um ambiente que consiste em uma versão do sistema operacional, além de pacotes complementares, suporte a linguagens e a biblioteca do Functions Framework que dá suporte e invoca a função. Esse ambiente é identificado pela versão da linguagem e é conhecido como ambiente de execução.
Para mais informações sobre ambientes de execução em geral e para saber qual versão do Ubuntu cada ambiente de execução Node.js usa, consulte o Ambiente de execução do Cloud Functions.
Para começar a criar e implantar o Cloud Functions com Node.js, consulte o Guia de início rápido.
Para criar e testar funções no sistema local, consulte Executar funções com o Functions Framework.
Selecionar o ambiente de execução
O Cloud Functions dá suporte a várias versões do Node.js, que estão listadas na página Suporte ao ambiente de execução. Selecione seu ambiente de execução Node.js preferencial para a função durante a implantação.
Consulte Implantação com a CLI do Google Cloud para saber como realizar a implantação usando a CLI do Google Cloud.
Consulte o guia de início rápido do console do Google Cloud para saber como realizar a implantação usando o console do Google Cloud.
Ambiente de execução
Isso inclui o ambiente de execução, o sistema operacional, os pacotes e uma biblioteca que invoca a função.
O Node.js 18 e as versões mais recentes usam um ambiente de execução que é baseado no Ubuntu 22.04. As versões anteriores ao Node.js 18 são baseadas no Ubuntu 18.04. Consulte o Ambiente de execução do Cloud Functions para mais informações.
A biblioteca que invoca a função é o Functions Framework para Node.js.
Estrutura do código-fonte
Para que o Cloud Functions encontre a definição da sua função, cada ambiente de execução possui determinados requisitos de estruturação para o código-fonte. Consulte Como escrever Cloud Functions para mais informações.
Especificar as dependências
É possível especificar dependências para suas funções listando-as em um
arquivo package.json
. Para ver mais informações, consulte Como especificar dependências no Node.js.
Script de build do NPM
Por padrão, o ambiente de execução do Node.js executará npm run build
se um script build
for detectado em package.json
. Se você precisar de mais controle sobre as etapas do build
antes de iniciar o aplicativo, forneça uma etapa de build personalizada
adicionando um script gcp-build
ao arquivo package.json
.
Para evitar que sua build execute o script npm run build
:
Adicione um script
gcp-build
com um valor vazio ao arquivopackage.json
:"gcp-build":""
.Definir a variável de ambiente de build
GOOGLE_NODE_RUN_SCRIPTS
como a string vazia para impedir que todos os scripts sejam executados.
Conclusão de função assíncrona
Ao trabalhar com tarefas assíncronas que envolvem callbacks ou objetos
Promise
, é necessário informar explicitamente o ambiente de execução que sua função encerrou
a execução dessas tarefas. É possível fazer isso de várias maneiras diferentes, conforme mostrado nos
exemplos abaixo. O segredo é que o código aguarde a
conclusão da tarefa assíncrona ou da Promise
antes de retornar. Caso contrário, o
componente assíncrono da função pode ser encerrado antes da conclusão.
Funções baseadas em eventos
Retorno implícito
exports.implicitlyReturning = async (event, context) => {
return await asyncFunctionThatReturnsAPromise();
};
Retorno explícito
exports.explicitlyReturning = function (event, context) {
return asyncFunctionThatReturnsAPromise();
};
Funções HTTP
Node.js
Usar o middleware para processar solicitações HTTP
As Cloud Functions HTTP para Node.js fornecem objetos request
e response
compatíveis com ExpressJS (em inglês) para simplificar o consumo das solicitações HTTP. O Cloud Functions lê automaticamente o
corpo da solicitação. Dessa maneira, você sempre recebe o corpo de uma solicitação, independentemente
do tipo de conteúdo. Isso significa que as solicitações HTTP precisam ser consideradas totalmente lidas no momento em que o código é executado. O aninhamento de apps ExpressJS precisa ser usado com a ressalva de que um middleware com corpo de solicitação não lido pode não ter o comportamento esperado.
Usar módulos ES
Os módulos do ECMAScript (módulos ES ou ESM) são um recurso padrão do TC39, sem sinalização,
na versão 14 ou posterior do Node para carregar módulos JavaScript. Ao contrário do CommonJS, o ESM
fornece uma API assíncrona para carregar módulos. Ele também fornece uma melhoria de
sintaxe popular com as instruções import
e export
, que podem ser usadas em
uma função do Cloud (em vez das instruções require
).
Para usar o ESM em uma função do Cloud, você precisa declarar "type": "module"
no
package.json
.
{
...
"type": "module",
...
}
Em seguida, use as instruções import
e export
.