Node.js 12 ist jetzt allgemein verfügbar.

Node.js-Laufzeitumgebung

Die Node.js-Laufzeit ist der Softwarestack, der für die Installation des Codes Ihres Webdiensts und der zugehörigen Abhängigkeiten sowie für die Ausführung des Diensts verantwortlich ist.

Die Node.js-Laufzeit für App Engine in der Standardumgebung wird in der Datei app.yaml deklariert:

Node.js 12

runtime: nodejs12

Node.js 10

runtime: nodejs10

Node.js 8 (verworfen)

runtime: nodejs8

Node.js-Version

Die Node.js-Laufzeit unterstützt Node.js 12, Node.js 10 und Node.js 8 (verworfen) und verwendet die neueste stabile Version der von Ihnen ausgewählten Version. Bei der Anwendungsbereitstellung nimmt App Engine automatisch eine Aktualisierung auf neue Releaseversionen vor. Eine Aktualisierung auf eine Nebenversion erfolgt jedoch nicht automatisch.

Beispiel: Eine mit Node.js 10.9.4 und höher erstellte Anwendung wird automatisch auf Version 10.10.0 aktualisiert, aber nicht auf Node.js 12.x.x.

Da Neben- und Patch-Versionen automatisch aktualisiert werden, kann das Attribut engines.node in der package.json-Datei nur die Hauptversion angeben:

Node.js 12

{
  "engines": {
    "node": "12.x.x"
  }
}

Node.js 10

{
  "engines": {
    "node": "10.x.x"
  }
}

Node.js 8 (verworfen)

{
  "engines": {
    "node": "8.x.x"
  }
}

Das Attribut engines.node ist optional, aber falls vorhanden, muss der Wert mit der in Ihrer Datei app.yaml angegebenen Version von Node.js kompatibel sein. Beispiel:

Node.js 12

  • 12.x.x
  • ^12.0.0
  • ~12
  • >=6

Node.js 10

  • 10.x.x
  • ^10.0.0
  • ~10
  • >=6

Node.js 8 (verworfen)

  • 8.x.x
  • ^8.0.0
  • ~8
  • >=6

Wenn Sie in Ihrer Datei package.json eine inkompatible Version von Node.js angeben, schlägt die Bereitstellung mit einer Fehlermeldung fehl.

Abhängigkeiten

Während der Bereitstellung installiert die Laufzeit die Abhängigkeiten mit dem Befehl npm install, oder wenn die Datei yarn.lock vorhanden ist, mit dem Befehl yarn install. Weitere Informationen finden Sie unter Abhängigkeiten angeben. Da durch die Laufzeit eine Neuinstallation durchgeführt wird, müssen Sie den Ordner node_modulesnicht hochladen.

Zur Unterstützung von Node.js-Paketen, die native Erweiterungen benötigen, enthält die Laufzeit Systempakete für die Verwendung von Tools wie ImageMagick, FFmpeg und Headless Chrome. Eine vollständige Liste der Pakete finden Sie unter Enthaltene Systempakete. Wenn Sie ein Paket anfordern möchten, melden Sie ein Problem in der Problemverfolgung.

Anwendungsstart

Standardmäßig startet die Laufzeit Ihrer Anwendung durch Ausführen von node server.js. Wenn Sie in der Datei package.json ein start-Skript angeben, führt die Laufzeit stattdessen das angegebene Startskript aus. Beispiel:

"scripts": {
  "start": "node app.js"
}

Damit Ihre Anwendung HTTP-Anfragen empfangen kann, sollte das start-Skript einen Webserver starten, der den Host 0.0.0.0 und den von der Umgebungsvariablen PORT angegebenen Port überwacht, auf den in Node.js als process.env.PORT zugegriffen werden kann.

Für eine optimale Leistung sollte das start-Skript einfach sein und keine Build-Schritte enthalten, da es immer dann ausgeführt wird, wenn eine neue Instanz Ihrer Anwendung erstellt wird.

Sie können dieses Verhalten überschreiben, indem Sie ein Skript im Feld entrypoint in app.yaml angeben. Statt node server.js oder ein Startskript auszuführen, startet die Laufzeit Ihre Anwendung mit dem Befehl, den Sie in entrypoint angeben.

Umgebungsvariablen

Folgende Umgebungsvariablen werden durch die Laufzeit festgelegt:

Umgebungsvariable Beschreibung
GAE_APPLICATION ID der App Engine-Anwendung. Diese ID hat das Präfix "region code~", z. B. "e~" für Anwendungen, die in Europa bereitgestellt werden.
GAE_DEPLOYMENT_ID ID der aktuellen Bereitstellung.
GAE_ENV App Engine-Umgebung. Legen Sie standard fest.
GAE_INSTANCE ID der Instanz, auf der Ihr Dienst gerade ausgeführt wird.
GAE_MEMORY_MB Größe des für den Anwendungsprozess verfügbaren Speichers in MB
GAE_RUNTIME Laufzeit, die in der Datei app.yaml angegeben ist.
GAE_SERVICE Dienstname, der in der Datei app.yaml angegeben ist. Wenn kein Dienstname angegeben ist, wird als Wert default festgelegt.
GAE_VERSION Aktuelle Versionsbezeichnung Ihres Dienstes.
GOOGLE_CLOUD_PROJECT Cloud-Projekt-ID, die der Anwendung zugeordnet ist.
NODE_ENV Erhält den Wert production, wenn der Dienst bereitgestellt wird.
PORT Port, der HTTP-Anfragen empfängt.

Sie können in der Datei app.yaml weitere Umgebungsvariablen definieren. Die oben angegebenen Werte können aber mit Ausnahme von NODE_ENV nicht überschrieben werden.

HTTPS und Weiterleitungsproxys

App Engine beendet HTTPS-Verbindungen am Load-Balancer und leitet Anfragen an die Anwendung weiter. Einige Anwendungen müssen die ursprüngliche Anfrage-IP-Adresse und das Protokoll bestimmen. Die IP-Adresse des Nutzers ist im Standardheader X-Forwarded-For verfügbar. Bei Anwendungen, die diese Informationen benötigen, sollte das Web-Framework so konfiguriert werden, dass dem Proxy vertraut wird.

Verwenden Sie für Express.js die Einstellung trust proxy:

app.set('trust proxy', true);

Dateisystem

Die Laufzeit enthält ein vollständiges Dateisystem. Das Dateisystem ist schreibgeschützt, mit Ausnahme des Speicherorts /tmp, bei dem es sich um ein virtuelles Laufwerk handelt, das Daten im RAM Ihrer App Engine-Instanz speichert.

Metadatenserver

Jede Instanz einer Anwendung kann den App Engine-Metadatenserver verwenden, um Informationen über die Instanz und das Projekt abzufragen.

Sie können über die folgenden Endpunkte auf den Metadatenserver zugreifen:

  • http://metadata
  • http://metadata.google.internal

In der folgenden Tabelle sind die Endpunkte aufgeführt, an die Sie HTTP-Anfragen für bestimmte Metadaten senden können:

Metadatenendpunkt Beschreibung
/computeMetadata/v1/project/numeric-project-id Projektnummer, die Ihrem Projekt zugewiesen ist.
/computeMetadata/v1/project/project-id Projekt-ID, die Ihrem Projekt zugewiesen ist.
/computeMetadata/v1/instance/zone Zone, in der die Instanz ausgeführt wird.
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email E-Mail-Adresse des Standarddienstkontos, die Ihrem Projekt zugewiesen ist.
/computeMetadata/v1/instance/service-accounts/default/ Listet alle Standarddienstkonten für Ihr Projekt auf.
/computeMetadata/v1/instance/service-accounts/default/scopes Listet alle unterstützten Bereiche für die Standarddienstkonten auf.
/computeMetadata/v1/instance/service-accounts/default/token Gibt das Authentifizierungstoken zurück, mit dem Ihre Anwendung gegenüber anderen Google Cloud APIs authentifiziert werden kann.

Wenn Sie z. B. Ihre Projekt-ID abrufen möchten, senden Sie eine Anfrage an http://metadata.google.internal/computeMetadata/v1/project/project-id.