Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfiguration der Abhängigkeiten Ihrer Anwendung von Elastic Beanstalk
Ihre Anwendung verfügt möglicherweise über Abhängigkeiten von einigen Node.js-Modulen, wie z. B. Modulen, die Sie in require()
-Anweisungen angeben. Diese Module werden in einem node_modules
-Verzeichnis gespeichert. Wenn Ihre Anwendung ausgeführt wird, lädt Node.js die Module aus diesem Verzeichnis. Weitere Informationen finden Sie in der Node.js-Dokumentation unter Laden aus den Ordnern „node_modules“
Sie können diese Modul-Abhängigkeiten mithilfe einer package.json
-Datei angeben. Wenn Elastic Beanstalk diese Datei erkennt und kein node_modules
-Verzeichnis vorhanden ist, führt Elastic Beanstalk npm install
als der webapp-Benutzer aus. Der npm
install
-Befehl installiert die Abhängigkeiten in dem node_modules
-Verzeichnis, das Elastic Beanstalk zuvor erstellt hat. Der npm
install
-Befehl greift auf die in der package.json
-Datei aufgeführten Pakete aus der öffentlichen npm-Registrierung oder von anderen Orten zu. Weitere Informationen finden Sie auf der Website npm-Dokumente
Wenn Elastic Beanstalk das node_modules
-Verzeichnis erkennt, führt Elastic Beanstalk npm install
nicht aus, auch wenn eine package.json
-Datei existiert. Elastic Beanstalk geht davon aus, dass die Abhängigkeitspakete im node_modules
-Verzeichnis verfügbar sind, sodass sie von Node.js abgerufen und geladen werden können.
In den folgenden Abschnitten erhalten Sie weitere Informationen zu den Node.js-Modulabhängigkeiten für Ihre Anwendung.
Anmerkung
Wenn bei der Ausführung von npm install
durch Elastic Beanstalk Probleme bei der Bereitstellung auftreten, sollten Sie einen alternativen Ansatz in Betracht ziehen. Fügen Sie das node_modules
-Verzeichnis mit den Abhängigkeiten zu Ihrem Anwendungs-Quell-Bundle hinzu. Dadurch können Sie Probleme bei der Installation von Abhängigkeiten aus der öffentlichen npm-Registry umgehen, während Sie das Problem untersuchen. Da die Abhängigkeitsmodule aus einem lokalen Verzeichnis stammen, kann dies auch dabei helfen, die Bereitstellungszeit zu verkürzen. Weitere Informationen finden Sie unter Einschließen von Node.js-Abhängigkeiten in ein node_modules-Verzeichnis.
Angeben von Node.js-Abhängigkeiten mit einer package.json-Datei
Sie können mithilfe einer package.json
-Datei im Stammverzeichnis Ihrer Projektquelle Abhängigkeitspakete angeben und einen Startbefehl bereitstellen. Wenn eine package.json
-Datei vorhanden ist und kein node_modules
-Verzeichnis im Stammverzeichnis Ihrer Projektquelle vorhanden ist, wird Elastic Beanstalk npm install
als webapp-Benutzer ausführen, um Abhängigkeiten aus der öffentlichen npm-Registry zu installieren. Außerdem wird Elastic Beanstalk die Anwendung mit dem Befehl start
starten. Weitere Informationen zur package.json
-Datei finden Sie unter Angeben von Abhängigkeiten in einer package.json
-Datei
Geben Sie mit dem Schlüsselwort scripts
einen Startbefehl an. Derzeit wird das Schlüsselwort scripts
anstelle der Legacy-Option NodeCommand
im Namespace aws:elasticbeanstalk:container:nodejs
verwendet.
Beispiel package.json – Express
{
"name": "my-app",
"version": "0.0.1",
"private": true,
"dependencies": {
"ejs": "latest",
"aws-sdk": "latest",
"express": "latest",
"body-parser": "latest"
},
"scripts": {
"start": "node app.js"
}
}
Produktionsmodus und Entwicklungsabhängigkeiten
Verwenden Sie die Attribute dependencies und devDependencies, um Ihre Abhängigkeiten in der package.json
-Datei anzugeben. Das Attribut dependencies bezeichnet Pakete, die Ihre Anwendung in der Produktion benötigt. Das Attribut devDependencies bezeichnet Pakete, die nur für die lokale Entwicklung und das Testen benötigt werden.
Elastic Beanstalk wird npm install
als webapp-Benutzer mit den folgenden Befehlen ausführen. Die Befehlsoptionen variieren je nach der npm-Version, die im Plattformzweig enthalten ist, auf dem Ihre Anwendung ausgeführt wird.
-
npm v6 – Elastic Beanstalk installiert die Abhängigkeiten standardmäßig im Produktionsmodus. Es verwendet den Befehl
npm install --production
. -
npm v7 oder höher – Elastic Beanstalk lässt die devDependencies weg. Es verwendet den Befehl
npm install --omit=dev
.
Beide oben aufgeführten Befehle installieren keine Pakete, bei denen es sich um devDependencies handelt.
Wenn Sie die devDependencies-Pakete installieren müssen, setzen Sie die Umgebungseigenschaft NPM_USE_PRODUCTION auf false
. Mit dieser Einstellung werden wir die obigen Optionen nicht verwenden, wenn wir npm install ausführen. Dies führt dazu, dass die devDependencies-Pakete installiert werden.
SSH und HTTPS
Ab der Amazon Linux 2-Plattformversion vom 7. März 2023 können Sie auch die SSH- und HTTPS-Protokolle verwenden, um Pakete aus einem Git-Repository abzurufen. Plattformzweig Node.js 16 unterstützt sowohl das SSH- als auch das HTTPS-Protokoll. Node.js 14 unterstützt nur das HTTPS-Protokoll.
Beispiel package.json – Node.js 16 unterstützt sowohl HTTPS als auch SSH
...
"dependencies": {
"aws-sdk": "https://github.com/aws/aws-sdk-js.git",
"aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git"
}
Versionen und Versionsbereiche
Wichtig
Die Funktion zur Angabe von Versionsbereichen ist für Plattformzweige von Node.js, die auf AL2 023 ausgeführt werden, nicht verfügbar. Wir unterstützen nur eine Version von Node.js innerhalb eines bestimmten Node.js -Zweigs auf AL2 023. Wenn Ihre package.json
-Datei einen Versionsbereich angibt, ignorieren wir diesen und verwenden standardmäßig die Version des Plattformzweigs von Node.js.
Verwenden Sie das Schlüsselwort engines
in der Datei package.json
, um die Node.js-Version anzugeben, die Ihre Anwendung verwenden soll. Mit der npm-Notation können Sie auch einen Versionsbereich angeben. Weitere Informationen zur Syntax für Versionsbereiche finden Sie unter Semantische Versionsverwaltung mit npmengines
in der Node.js package.json
-Datei ersetzt die ältere Option NodeVersion
im aws:elasticbeanstalk:container:nodejs
-Namespace.
Beispiel package.json
– Einzelne Node.js-Version
{
...
"engines": { "node" : "14.16.0" }
}
Beispiel package.json
– Node.js Versionsbereich
{
...
"engines": { "node" : ">=10 <11" }
}
Wenn ein Versionsbereich angegeben wird, installiert Elastic Beanstalk die neueste Node.js-Version, die der Plattform innerhalb des Bereichs zur Verfügung steht. In diesem Beispiel gibt der Bereich an, dass die Version größer oder gleich als Version 10 sein muss, aber kleiner als Version 11. Infolgedessen installiert Elastic Beanstalk die neueste Version von Node.js 10.x.y, die auf der unterstützten Plattform verfügbar ist.
Beachten Sie, dass Sie jeweils nur eine Node.js-Version angeben können, die Ihrem Plattformzweig entspricht. Wenn Sie beispielsweise den Plattformzweig Node.js 16 verwenden, können Sie nur eine 16.x.y-Version Node.js angeben. Sie können die von npm unterstützten Versionsbereichsoptionen verwenden, um eine größere Flexibilität zu ermöglichen. Gültige Versionen von Node.js für jeden Plattformzweig finden Sie unter Node.js im Handbuch AWS Elastic Beanstalk -Plattformen.
Anmerkung
Wenn die von Ihnen verwendete Version von Node.js von der Plattform nicht mehr unterstützt wird, müssen Sie die Einstellung der Node.js-Version vor der Ausführung einer Plattform-Aktualisierung ändern oder löschen. Dieser Fall kann eintreten, wenn eine Schwachstelle bei einer oder mehreren Versionen von Node.js identifiziert wird.
In diesem Fall schlägt die Aktualisierung auf eine neue Plattformversion, die die konfigurierte Node.js-Version nicht unterstützt, fehl. Um zu vermeiden, dass eine neue Umgebung erstellt werden muss, ändern Sie die Einstellung der Node.js-Version in package.json
in eine Node.js-Version, die sowohl von der alten als auch von der neuen Version unterstützt wird. Sie können einen Node.js-Versionsbereich angeben, der eine unterstützte Version enthält, wie oben in diesem Thema beschrieben. Außerdem können Sie die Einstellung entfernen und dann das neue Quellpaket bereitstellen.
Einschließen von Node.js-Abhängigkeiten in ein node_modules-Verzeichnis
Wenn Sie Abhängigkeitspakete zusammen mit Ihrem Anwendungscode in Umgebungsinstances bereitstellen möchten, fügen Sie sie in das Verzeichnis node_modules
im Stammverzeichnis der Projektquelle ein. Weitere Informationen finden Sie unter Pakete lokal herunterladen und installieren
Wenn Sie ein node_modules Verzeichnis auf einer AL2 Node.js Plattformversion AL2 023/ bereitstellen, geht Elastic Beanstalk davon aus, dass Sie Ihre eigenen Abhängigkeitspakete bereitstellen, und vermeidet die Installation von Abhängigkeiten, die in einer package.json-Datei angegeben sind. Node.jssucht im Verzeichnis nach Abhängigkeiten. node_modules
Weitere Informationen finden Sie unter Laden aus node_modules-Ordnern
Anmerkung
Wenn bei der Ausführung von npm install
durch Elastic Beanstalk Probleme bei der Bereitstellung auftreten, sollten Sie bei der Untersuchung des Problems den in diesem Thema beschriebenen Ansatz als Workaround verwenden.