Runtime di Node.js
La funzione Cloud Functions viene eseguita in un ambiente composto da una versione del sistema operativo più pacchetti di componenti aggiuntivi, supporto del linguaggio e la libreria di frame di Functions che supporta e richiama la tua funzione. Questo ambiente è identificato dalla versione della lingua ed è noto come runtime.
Per informazioni sui runtime in generale e per sapere quale versione di Ubuntu utilizza ciascun runtime Node.js, consulta l'ambiente di esecuzione di Cloud Functions.
Per iniziare a creare ed eseguire il deployment di Cloud Functions con Node.js, consulta la guida rapida.
Per creare e testare le tue funzioni sul sistema locale, consulta Eseguire le funzioni con il framework di Functions.
Seleziona il runtime
Cloud Functions supporta diverse versioni di Node.js, elencate nella pagina Supporto del runtime. Puoi selezionare il runtime Node.js preferito per la funzione durante il deployment:
Consulta Eseguire il deployment di una funzione Cloud Functions per maggiori dettagli sul deployment da Google Cloud CLI.
Per maggiori dettagli sul deployment dalla console Google Cloud, consulta la guida rapida della console Google Cloud.
Ambiente di esecuzione
L'ambiente di esecuzione include il runtime, il sistema operativo, i pacchetti e una libreria che richiama la tua funzione.
Node.js 18 e versioni successive utilizzano un ambiente di esecuzione basato su Ubuntu 22.04. Le versioni precedenti a Node.js 18 si basano su Ubuntu 18.04. Consulta Ambiente di esecuzione di Cloud Functions per ulteriori informazioni.
La libreria che richiama la tua funzione è il framework di funzioni Node.js.
Struttura del codice sorgente
Affinché Cloud Functions trovi la definizione della tua funzione, ogni runtime ha determinati requisiti di strutturazione per il codice sorgente. Per ulteriori informazioni, consulta Scrittura di Cloud Functions.
Specifica delle dipendenze
Puoi specificare le dipendenze per le funzioni elencandole in un
file package.json
. Per ulteriori informazioni, consulta Specifica delle dipendenze in Node.js.
Script di build Gestione dei partner di rete
Per impostazione predefinita, il runtime Node.js esegue npm run build
se viene rilevato uno script build
in package.json
. Se hai bisogno di un ulteriore controllo sui passaggi di build prima di avviare l'applicazione, puoi fornire un passaggio di build personalizzato aggiungendo uno script gcp-build
al tuo file package.json
.
Per impedire alla build di eseguire lo script npm run build
:
Aggiunta di uno script
gcp-build
con un valore vuoto nel filepackage.json
:"gcp-build":""
.Impostazione della variabile di ambiente di build
GOOGLE_NODE_RUN_SCRIPTS
sulla stringa vuota per impedire l'esecuzione di tutti gli script.
Completamento delle funzioni asincrona
Quando lavori con attività asincrone che coinvolgono callback o oggetti Promise
, devi comunicare esplicitamente al runtime che la tua funzione ha terminato
l'esecuzione di queste attività. Puoi farlo in diversi modi, come mostrato
nei seguenti esempi. La chiave è che il codice deve attendere il completamento dell'attività asincrona o del Promise
prima di tornare; altrimenti, il componente asincrono della funzione potrebbe essere terminato prima del completamento.
Funzioni basate su eventi
Reso implicito
exports.implicitlyReturning = async (event, context) => {
return await asyncFunctionThatReturnsAPromise();
};
Ritorno esplicito
exports.explicitlyReturning = function (event, context) {
return asyncFunctionThatReturnsAPromise();
};
Funzioni HTTP
Node.js
Utilizzo del middleware per gestire le richieste HTTP
Le funzioni Cloud Functions HTTP di Node.js forniscono oggetti request
e response
compatibili con ExpressJS per semplificare la gestione delle richieste HTTP. Cloud Functions legge automaticamente il corpo della richiesta, quindi riceverai sempre il corpo di una richiesta indipendentemente dal tipo di media. Ciò significa che le richieste HTTP devono essere considerate
completamente lette al momento dell'esecuzione del codice. La nidificazione delle app ExpressJS deve essere utilizzata tenendo presente questa avvertenza; in particolare, il middleware che prevede che il corpo di una richiesta venga letto potrebbe non comportarsi come previsto.
Utilizzo dei moduli ES
I moduli ECMAScript (moduli ES o ESM) sono una funzionalità standard TC39 non segnalata in Node versione 14 e successive per il caricamento dei moduli JavaScript. A differenza di CommonJS, ESM offre
un'API asincrona per caricare i moduli. Fornisce inoltre un noto miglioramento della sintassi con istruzioni import
e export
che possono essere utilizzate all'interno di una Cloud Function (anziché istruzioni require
).
Per utilizzare ESM all'interno di una Cloud Function, devi dichiarare "type": "module"
in package.json
.
{
...
"type": "module",
...
}
Puoi utilizzare gli estratti conto import
e export
.