Node.js-Laufzeit
Die Cloud Run-Funktion wird in einer Umgebung ausgeführt, die aus einer Betriebssystemversion, Add-on-Paketen, Sprachunterstützung und der Functions Framework-Bibliothek besteht, die Ihre Funktion unterstützt und aufruft. Diese Umgebung wird durch die Sprachversion identifiziert und als Laufzeit bezeichnet.
Informationen zu Laufzeiten im Allgemeinen und dazu, welche Ubuntu-Version jede Node.js-Laufzeit verwendet, finden Sie in der Ausführungsumgebung von Cloud Run-Funktionen.
Informationen zum Erstellen und Bereitstellen von Cloud Run-Funktionen mit Node.js finden Sie in der Kurzanleitung.
Informationen zum Erstellen und Testen von Funktionen auf Ihrem lokalen System finden Sie unter Funktionen mit Functions Framework ausführen.
Laufzeit auswählen
Cloud Run-Funktionen unterstützen mehrere Versionen von Node.js, die auf der Seite Laufzeitsupport aufgeführt sind. Sie können die bevorzugte Node.js-Laufzeit für Ihre Funktion während der Bereitstellung auswählen.
Weitere Informationen zum Bereitstellen über die Google Cloud CLI finden Sie unter Mit der Google Cloud CLI bereitstellen.
Weitere Informationen zur Bereitstellung über die Google Cloud Console finden Sie in der Google Cloud Console-Kurzanleitung.
Ausführungsumgebung
Die Ausführungsumgebung enthält die Laufzeit, das Betriebssystem, Pakete und eine Bibliothek, die Ihre Funktion aufruft.
Node.js 18 und neuere Versionen verwenden eine Ausführungsumgebung auf der Basis von Ubuntu 22.04. Versionen vor Node.js 18 basieren auf Ubuntu 18.04. Weitere Informationen finden Sie unter Ausführungsumgebung von Cloud Run-Funktionen.
Die Bibliothek, die die Funktion aufruft, ist Node.js Functions Framework.
Struktur des Quellcodes
Damit Cloud Run-Funktionen die Definition Ihrer Funktion findet, hat jede Laufzeit bestimmte Strukturanforderungen für Ihren Quellcode. Weitere Informationen finden Sie unter Cloud Run-Funktionen schreiben.
Abhängigkeiten angeben
Sie können für Funktionen Abhängigkeiten angeben. Dazu müssen Sie diese in der Datei package.json
auflisten. Weitere Informationen finden Sie unter Abhängigkeiten in Node.js angeben.
NPM-Build-Skript
Standardmäßig führt die Node.js-Laufzeit npm run build
aus, wenn in package.json
ein build
-Skript erkannt wird. Wenn Sie vor dem Starten Ihrer Anwendung zusätzliche Kontrolle über die Build-Schritte benötigen, können Sie einen benutzerdefinierten Build-Schritt hinzufügen. Fügen Sie dazu der Datei package.json
ein gcp-build
-Skript hinzu.
Sie können verhindern, dass Ihr Build das Skript npm run build
ausführt, indem Sie eines der folgendes Dinge tun:
Fügen Sie ein
gcp-build
-Script mit einem leeren Wert in Ihrepackage.json
-Datei ein:"gcp-build":""
.Setzen Sie die Build-Umgebungsvariable
GOOGLE_NODE_RUN_SCRIPTS
auf den leeren String, um zu verhindern, dass alle Skripts ausgeführt werden.
Asynchrone Vervollständigung von Funktionen
Wenn Sie mit asynchronen Aufgaben arbeiten, die Rückrufe oder Promise
-Objekte enthalten, müssen Sie der Laufzeit ausdrücklich mitteilen, dass die Funktion die Ausführung dieser Aufgaben abgeschlossen hat. Dies können Sie auf verschiedene Arten tun, wie in den folgenden Beispielen gezeigt. Der Punkt ist, dass Ihr Code auf den Abschluss der asynchronen Aufgabe oder von Promise
warten muss, bevor er zurückkehren kann. Andernfalls wird die asynchrone Komponente Ihrer Funktion möglicherweise beendet, bevor sie abgeschlossen ist.
Ereignisgesteuerte Funktionen
Implizite Rückgabe
exports.implicitlyReturning = async (event, context) => {
return await asyncFunctionThatReturnsAPromise();
};
Explizite Rückgabe
exports.explicitlyReturning = function (event, context) {
return asyncFunctionThatReturnsAPromise();
};
HTTP-Funktionen
Node.js
Middleware zur Verarbeitung von HTTP-Anfragen verwenden
Zur einfacheren Verarbeitung von HTTP-Anfragen stellen Cloud Run-HTTP-Funktionen in Node.js request
- und response
-Objekte bereit, die mit ExpressJS kompatibel sind. Cloud Run-Funktionen lesen den Anfragetext automatisch, sodass Sie diesen immer unabhängig vom Medientyp erhalten. Das bedeutet, dass HTTP-Anfragen zum Zeitpunkt der Codeausführung als vollständig gelesen angesehen werden sollten. Dies sollte beim Verschachteln von ExpressJS-Anwendungen beachtet werden. Insbesondere Middleware, die erwartet, dass der Anfragetext ungelesen ist, verhält sich eventuell nicht wie gewohnt.
ES-Module verwenden
ECMAScript-Module (ES-Module oder ESM) sind ein standardmäßiges TC39-Feature in Node Version 14+ zum Laden von JavaScript-Modulen. Im Gegensatz zu CommonJS bietet ESM eine asynchrone API zum Laden von Modulen. Es bietet auch eine beliebte Syntaxverbesserung über import
- und export
-Anweisungen, die in einer Cloud Run-Funktion anstelle von require
-Anweisungen verwendet werden können.
Zur Verwendung von ESM in einer Cloud Run-Funktion müssen Sie "type": "module"
in Ihrem package.json
deklarieren.
{
...
"type": "module",
...
}
Dann können Sie die Anweisungen import
und export
verwenden.