Runtime di Node.js
La funzione Cloud Functions viene eseguita in un ambiente composto da una versione del sistema operativo più pacchetti aggiuntivi, supporto dei linguaggi e la libreria di framework di Functions che supporta e richiama la tua funzione. Questo ambiente è identificato dalla versione in lingua ed è noto come runtime.
Per informazioni sui runtime in generale e per scoprire quale versione di Ubuntu viene utilizzata da ciascun runtime Node.js, consulta l'articolo sull'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 il framework di Functions con Functions.
Seleziona il runtime
Cloud Functions supporta diverse versioni di Node.js, elencate nella pagina Supporto runtime. Puoi selezionare il runtime Node.js preferito per la funzione durante il deployment:
Vedi Eseguire il deployment utilizzando Google Cloud CLI per i dettagli sul deployment da Google Cloud CLI.
Consulta la guida rapida della console Google Cloud per i dettagli sul deployment dalla console Google Cloud.
Ambiente di esecuzione
L'ambiente di esecuzione include il runtime, il sistema operativo, i pacchetti e una libreria che richiama la 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. Per ulteriori informazioni, consulta Ambiente di esecuzione di Cloud Functions.
La libreria che richiama la tua funzione è il framework delle funzioni Node.js.
Struttura del codice sorgente
Per consentire a Cloud Functions di trovare 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 tue funzioni elencandole in un
file package.json
. Per ulteriori informazioni, consulta Specifica delle dipendenze in Node.js.
Script di build di 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 maggiore 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
.
Puoi impedire alla build di eseguire lo script npm run build
in uno dei seguenti modi:
Aggiunta di uno script
gcp-build
con un valore vuoto nel filepackage.json
:"gcp-build":""
.Impostare la variabile di ambiente di compilazione
GOOGLE_NODE_RUN_SCRIPTS
sulla stringa vuota per impedire l'esecuzione di tutti gli script.
Completamento della funzione asincrona
Quando lavori con attività asincrone che prevedono callback o oggetti Promise
, devi informare esplicitamente il runtime che la funzione ha terminato l'esecuzione di queste attività. Puoi farlo in diversi modi, come mostrato negli esempi che seguono. La chiave è che il codice deve attendere il completamento
dell'attività asincrona o di Promise
prima di tornare; in caso contrario,
il componente asincrono della funzione potrebbe essere interrotto prima del completamento.
Funzioni basate su eventi
Ritorno implicito
exports.implicitlyReturning = async (event, context) => {
return await asyncFunctionThatReturnsAPromise();
};
Restituzione esplicita
exports.explicitlyReturning = function (event, context) {
return asyncFunctionThatReturnsAPromise();
};
Funzioni HTTP
Node.js
Utilizzo del middleware per gestire le richieste HTTP
Le funzioni Cloud Functions HTTP Node.js forniscono oggetti request
e response
compatibili con
ExpressJS
per semplificare l'utilizzo delle richieste HTTP. Cloud Functions legge automaticamente il corpo della richiesta, quindi riceverai sempre il corpo di una richiesta, indipendentemente dal tipo di supporto. Ciò significa che le richieste HTTP dovrebbero essere considerate
che siano state lette completamente al momento dell'esecuzione del codice. La nidificazione delle app ExpressJS
dovrebbe essere utilizzata con questo avvertimento: in particolare, il middleware che prevede che il corpo di una richiesta non sia letto potrebbe non comportarsi come previsto.
Utilizzare i moduli ES
I moduli ECMAScript (moduli ES o ESM) sono una funzionalità standard TC39 non contrassegnata
nella versione Node 14 e successive per il caricamento dei moduli JavaScript. A differenza di CommonJS, ESM
fornisce un'API asincrona per il caricamento dei moduli. Fornisce inoltre un popolare miglioramento della sintassi con le istruzioni import
e export
che possono essere utilizzate all'interno di una Cloud Function (invece delle istruzioni require
).
Per utilizzare ESM in una Cloud Function, devi dichiarare "type": "module"
all'interno di package.json
.
{
...
"type": "module",
...
}
Dopodiché potrai utilizzare gli estratti conto import
e export
.