Runtime di Node.js
La funzione Cloud Run viene eseguita in un ambiente costituito da una versione del sistema operativo, oltre a pacchetti aggiuntivi, supporto per le lingue e la libreria Functions Framework che supporta e richiama la 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 utilizzato da ciascun runtime Node.js, consulta l'ambiente di esecuzione delle funzioni Cloud Run.
Per iniziare a creare ed eseguire il deployment delle funzioni di Cloud Run con Node.js, consulta Guida rapida.
Per creare e testare le funzioni sul tuo sistema locale, consulta Eseguire funzioni con Functions Framework.
Seleziona il runtime
Le funzioni Cloud Run supportano diverse versioni di Node.js, elencate nella pagina Supporto del runtime. Puoi selezionare il runtime Node.js preferito per la tua funzione durante il deployment:
Consulta Eseguire il deployment di una funzione Cloud Run per maggiori dettagli sul deployment da Google Cloud CLI.
Per maggiori dettagli, consulta la guida rapida della console Google Cloud il deployment dalla console Google Cloud.
Ambiente di esecuzione
L'ambiente di esecuzione include il runtime, il sistema operativo, i pacchetti e una libreria che invoca la funzione.
Node.js 18 e le 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 delle funzioni Cloud Run.
La libreria che richiama la tua funzione è Framework di funzioni Node.js.
Struttura del codice sorgente
Affinché le funzioni Cloud Run trovino la definizione della tua funzione, ogni del runtime ha determinati requisiti di struttura per il codice sorgente. Consulta: Scrittura di funzioni Cloud Run per ulteriori informazioni.
Specifica delle dipendenze
Puoi specificare le dipendenze per le funzioni elencandole in un
package.json
. Per ulteriori informazioni, vedi
Specifica delle dipendenze in Node.js.
Script di build Gestione dei partner di rete
Per impostazione predefinita, il runtime di Node.js esegue npm run build
se viene rilevato uno script build
in package.json
. Se hai bisogno di un controllo aggiuntivo sulla build
passaggi 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
, puoi:
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 delle funzioni asincrona
Quando utilizzi attività asincrone che richiedono callback o oggetti Promise
, devi informare esplicitamente il runtime che la funzione ha completato l'esecuzione di queste attività. Puoi farlo in diversi modi, come mostrato in
i seguenti esempi. La chiave è che il codice deve attendere
attività asincrona o Promise
da completare prima di tornare; altrimenti
il componente asincrono della funzione può essere terminato prima del suo completamento.
Funzioni basate su eventi
Valore restituito 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 Run HTTP di Node.js forniscono oggetti request
e response
compatibili con ExpressJS per semplificare l'utilizzo delle richieste HTTP. Le funzioni Cloud Run leggono automaticamente il corpo della richiesta, pertanto riceverai sempre il corpo di una richiesta indipendentemente dal tipo di media. Ciò significa che le richieste HTTP devono essere considerate
completamente letto prima dell'esecuzione del codice. Il nidificazione delle applicazioni ExpressJS deve essere utilizzata con questo avvertimento: in particolare, il middleware che si aspetta 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à non segnalata standard del TC39
in Node versione 14 e successive per il caricamento dei moduli JavaScript. A differenza di CommonJS, ESM
fornisce un'API asincrona per caricare i moduli. Fornisce inoltre un miglioramento della sintassi popolare con le istruzioni import
e export
che possono essere utilizzate all'interno di una funzione Cloud Run (anziché le istruzioni require
).
Per utilizzare ESM all'interno di una funzione Cloud Run, devi dichiarare "type": "module"
all'interno di package.json
.
{
...
"type": "module",
...
}
Dopodiché puoi utilizzare le istruzioni import
e export
.