Ich habe eine standardmäßige clean node.js-App über Elastic Beanstalk bereitgestellt und ein node.js-Skript versucht, npm install
im Projektverzeichnis auszuführen ( /var/app/current/deploy-dist
), jedoch wird der folgende Berechtigungsfehler ausgelöst:
Das package.json
ist nur ein:
Das Ausführen von npm install
mit sudo funktioniert offensichtlich, wird aber bevorzugt als Lösung vermieden.
Setzen Sie NPM_CONFIG_PREFIX
auf ein Verzeichnis bei ~
gemäß npm
docs suggestion hat auch nicht funktioniert, und das Problem besteht weiter.
Ich vermute, dass das Problem in falschen Berechtigungen für /tmp/.npm
liegt, die
Das ist verwirrend, da ich erwartet habe, dass eine einfache npm install
aus der Box funktioniert.
UPDATE: Sollte das Projektverzeichnis nicht bereits einen node_modules
Ordner enthalten, aber selbst wenn Sie es entfernen und npm install
ausführen, wird es nicht repariert.
Ich hatte dieses Problem! Sie können ebextensions verwenden, um ein Skript nach der Bereitstellung , das die Berechtigungen des Ordners tmp/npm/.locks
ändert.
Erstellen Sie in Ihrem node.js-Projekt einen .ebextensions
-Ordner, wenn Sie noch keinen Ordner haben. Fügen Sie dann eine neue Konfigurationsdatei hinzu, z. 00_create_postdeploy_script.config
, mit folgendem yaml:
Bei der Bereitstellung wird ein Skript in /opt/elasticbeanstalk/hooks/appdeploy/post
namens 99_fix_node_permissions.sh
erstellt, das wie folgt aussieht:
Da es sich in diesem post
-Ordner befindet, wird es automatisch ausgeführt, nachdem Ihre App bereitgestellt wurde - und somit die Berechtigungen nach Bedarf ändern.
BEARBEITEN: Wenn Sie Probleme mit den Berechtigungen des ganzen .npm
-Ordners haben, sollten Sie die letzte Zeile der Konfigurationsdatei auf <ändern / p>
%Vor%
Tags und Links node.js amazon-web-services ubuntu elastic-beanstalk