Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Runtime di Node.js

Cloud Functions supporta i seguenti runtime Node.js:

  • Node.js 18 (consigliato)
  • Node.js 16
  • Node.js 14
  • Node.js 12
  • Node.js 10

Per istruzioni su come eseguire la funzione Node.js in locale, consulta Esecuzione di funzioni con framework delle funzioni.

Per iniziare a utilizzare Node.js su Cloud Functions, consulta la Guida rapida.

Selezione del runtime

Puoi selezionare il runtime Node.js desiderato per la tua funzione durante il deployment.

gcloud

Se utilizzi Google Cloud CLI, puoi specificare il runtime usando il parametro --runtime. Ad esempio:

gcloud functions deploy NAME --runtime nodejs18 --trigger-http

Per altri argomenti che puoi specificare quando esegui il deployment, consulta la pagina Eseguire il deployment utilizzando lo strumento gcloud.

Console

Se utilizzi la console Google Cloud, puoi selezionare il runtime quando crei ed esegui il deployment di una funzione. Per istruzioni dettagliate, consulta la guida rapida di Google Cloud Console.

Ambiente di esecuzione

L'ambiente di esecuzione include il runtime, il sistema operativo, i pacchetti e una libreria che richiama la tua funzione.

I runtime Node.js utilizzano un ambiente di esecuzione basato 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 per i nodi.

Struttura del codice sorgente

Affinché Cloud Functions trovi la definizione della tua funzione, ogni runtime deve avere determinati requisiti di struttura per il codice sorgente. Per ulteriori informazioni, consulta la sezione Scrittura di funzioni Cloud Functions.

Specifica delle dipendenze

Puoi specificare le dipendenze per le tue funzioni elencandole in un file package.json. Per saperne di più, consulta Specificare le dipendenze in Node.js.

Interruzione della funzione di segnalazione

Quando lavori con attività asincrone che coinvolgono callback o oggetti Promise, devi informare esplicitamente il runtime che la tua funzione ha terminato l'esecuzione di queste attività. Puoi eseguire questa operazione in diversi modi, come mostrato negli esempi riportati di seguito.

Funzioni basate su eventi

Node.js

// Await-ing promises within functions is OK if you don't return anything
await Promise.resolve();

// These will cause background tasks to stop executing immediately
return 1; // OK: returning a value

// These will wait until the related background task finishes
return Promise.resolve(); // OK: returning the promise itself
return await Promise.resolve(); // Same as above
return Promise.reject(); // OK: same behavior as to-be-resolved promises
return await Promise.reject(); // Same as above

Funzioni HTTP

Node.js

// OK: await-ing a Promise before sending an HTTP response
await Promise.resolve();

// WRONG: HTTP functions should send an
// HTTP response instead of returning.
return Promise.resolve();

// HTTP functions should signal termination by returning an HTTP response.
// This should not be done until all background tasks are complete.
res.send(200);
res.end();

// WRONG: this may not execute since an
// HTTP response has already been sent.
return Promise.resolve();

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 il consumo delle richieste HTTP. Cloud Functions legge automaticamente il corpo della richiesta, quindi riceverai sempre il corpo di una richiesta indipendentemente dal tipo di contenuto. Ciò significa che le richieste HTTP devono essere considerate completamente lette al momento dell'esecuzione del codice. La nidificazione delle app ExpressJS dovrebbe essere utilizzata con questa precisazione, in particolare il middleware che prevede che il corpo di una richiesta da leggere potrebbe non funzionare come previsto.

Utilizzo di moduli ES

I moduli ECMAScript (moduli ES o ESM) sono una funzionalità standard e non segnalata di TC39 nella versione 14 e successive del nodo per il caricamento di moduli JavaScript. A differenza di CommonJS, ESM fornisce un'API asincrona per il caricamento dei moduli. Fornisce inoltre un popolare miglioramento della sintassi tramite le istruzioni import e export che possono essere utilizzate all'interno di una funzione Cloud (anziché le istruzioni require).

Per utilizzare ESM all'interno di una funzione Cloud Functions, devi dichiarare "type": "module" in package.json.

{
  ...
  "type": "module",
  ...
}

Successivamente, puoi utilizzare gli estratti conto import e export.