J'essaie de configurer mon environnement de nœud sur une nouvelle instance Ubuntu 12.04, avec Node 0.8.14 déjà installé, mais des problèmes se sont produits lorsque j'ai essayé d'exécuter npm install
. Donc, quand j'essaie npm install
, il dit que je dois l'exécuter en tant que root ou administrateur:
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.
Mais quand essayez de le lancer en tant que Sudo, il dit ce qui suit:
npm WARN cannot run in wd [email protected] npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
Dans mon package.json, il contient les scripts suivants:
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
Le reste des devdependencies sont valables puisque je l’installe correctement sur ma propre machine (Mac) Est-ce que quelqu'un a une idée de la raison pour laquelle cela se produit?
OP ici, j'ai beaucoup appris sur les nœuds depuis que j'ai posé cette question pour la première fois. Bien que la réponse de Dmitry ait été très utile, ce qui l’a finalement été pour moi est d’installer un nœud avec les autorisations appropriées.
Je recommande fortement de ne pas installer le noeud en utilisant un gestionnaire de paquets, mais plutôt de le compiler vous-même afin qu'il réside dans un répertoire local avec des autorisations normales.
Cet article fournit des instructions étape par étape très claires expliquant comment procéder:
Le documentation dit (aussi ici ):
Si npm a été appelé avec des privilèges root, il utilisera le compte utilisateur ou le compte utilisateur spécifié par la variable
user
config, dont la valeur par défaut seranobody
. Définissez l’indicateurunsafe-perm
pour exécuter des scripts avec les privilèges root.
Vos options sont:
Exécutez npm install
avec l'indicateur --unsafe-perm
:
[Sudo] npm install --unsafe-perm
Ajoutez le drapeau unsafe-perm
à votre package.json
:
"config": {
"unsafe-perm":true
}
N'utilisez pas le script preinstall
pour installer des modules globaux, installez-les séparément, puis exécutez le npm install
normal sans privilèges root:
Sudo npm install -g coffee-script node-gyp
npm install
Connexes :
La seule chose qui a fonctionné pour moi a été d'ajouter un fichier .npmrc
contenant:
unsafe-perm = true
L'ajout de la même configuration à package.json
n'a eu aucun effet.
J'ai rencontré le même problème en essayant de publier mon application nodejs sur un serveur privé exécutant CentOs à l'aide de l'utilisateur root. La même erreur est déclenchée par "postinstall": "./node_modules/bower/bin/bower install" dans mon fichier package.json. La seule solution qui fonctionnait pour moi consiste à utiliser les deux options pour éviter l'erreur:
1: utilise l'option --allow-root pour la commande bower install
"postinstall": "./node_modules/bower/bin/bower --allow-root install"
2: utilise l'option --unsafe-perm pour la commande npm install
npm install --unsafe-perm
J'ai corrigé cela en changeant la propriété de /usr/local
et ~/Users/user-name
comme ceci:
Sudo chown -R my_name /usr/local
Cela m'a permis de tout faire sans Sudo