Ich versuche, meine Knotenumgebung auf einer neuen Ubuntu 12.04-Instanz einzurichten, auf der Node 0.8.14 bereits installiert ist. Beim Versuch, sie auszuführen, sind jedoch Probleme aufgetreten npm install
. Wenn ich es versuche npm install
, heißt es, dass ich es als root oder adminisrator ausführen muss:
Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ 'DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR! 'Object.oncomplete (fs.js:297:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
Wenn Sie jedoch versuchen, es als sudo auszuführen, wird Folgendes angezeigt:
npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
In meiner package.json enthält es die folgenden Skripte:
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
Die restlichen Abhängigkeiten sind gültig, da ich alles richtig auf meinem eigenen Computer (Mac) installiert habe. Hat jemand eine Ahnung, warum dies geschieht?
sudo npm install --unsafe-perm
jedochsudo npm install
nicht, obwohl ich"unsafe-perm":true
zu package.json hinzugefügt habe ... Ich weiß nicht warumnpm install --unsafe-perm
ich arbeite, habe ich versucht, die Implikation bezüglich der Änderung der Standardkonfiguration zu befolgenuser
. Also habe ichnpm set user my_user
undnpm set group my_group
, was die entsprechenden Einträge in die.npmrc
Datei des Root-Benutzers hinzufügt . Das Problem ist jedoch, dass dernode_modules
Ordner selbst und seine Unterordner immer noch im Besitz von root sind, sodass dies nicht hilft. Ich konnte keine Möglichkeit finden, sie nicht im Besitz von root zu haben.Das einzige, was für mich funktioniert hat, war das Hinzufügen einer
.npmrc
Datei mit:Das Hinzufügen derselben Konfiguration zu
package.json
hatte keine Auswirkung.quelle
RUN npm set unsafe-perm true
Ich habe das gleiche Problem beim Versuch, meine nodejs-App auf einem privaten Server zu veröffentlichen, auf dem CentOs mit Root-Benutzern veröffentlicht werden. Der gleiche Fehler wird von "postinstall" ausgelöst: "./node_modules/bower/bin/bower install" in meiner package.json-Datei. Die einzige Lösung, die für mich funktioniert hat, besteht darin, beide Optionen zu verwenden, um den Fehler zu vermeiden:
1: Verwenden Sie die Option --allow-root für den Befehl bower install
2: Verwenden Sie die Option --unsafe-perm für den Befehl npm install
quelle
OP hier, ich habe viel mehr über Knoten gelernt, seit ich diese Frage zum ersten Mal gestellt habe. Obwohl Dmitrys Antwort sehr hilfreich war, war es für mich letztendlich, den Knoten mit den richtigen Berechtigungen zu installieren.
Ich empfehle dringend, den Knoten nicht mit Paketmanagern zu installieren, sondern ihn selbst zu kompilieren, damit er sich in einem lokalen Verzeichnis mit normalen Berechtigungen befindet.
Dieser Artikel enthält eine sehr klare Schritt-für-Schritt-Anleitung dazu:
https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04
quelle
Ich habe dies behoben, indem ich den Eigentümer von
/usr/local
und~/Users/user-name
wie folgt geändert habe:sudo chown -R my_name /usr/local
Dadurch konnte ich alles ohne machen
sudo
quelle