web-dev-qa-db-fra.com

Autorisation refusée lors de l'installation du module npm

Je reçois une étrange erreur d'autorisation lorsque j'essaie d'installer un module npm. Je le démarre avec Sudo donc je suis sûr que j'y ai accès, mais pour une raison quelconque, il continue de se plaindre d'une erreur:

erreur de pile: EACCES: autorisation refusée, mkdir '/ usr/lib/node_modules/joplin/node_modules/sqlite3/build'

J'ai essayé de redémarrer mon ordinateur et de créer un répertoire /usr/lib/node_modules/joplin avec chmod 777, mais cela ne fonctionne toujours pas.

$ Sudo npm install -g joplin
/usr/bin/joplin -> /usr/lib/node_modules/joplin/main.js

> [email protected] install /usr/lib/node_modules/joplin/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(undefined): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v3.1.9/node-v48-linux-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v48 ABI) (falling back to source compile with node-gyp)
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/joplin/node_modules/sqlite3/build'
gyp ERR! stack     at Error (native)
gyp ERR! System Linux 4.4.0-43-Microsoft
gyp ERR! command "/usr/bin/nodejs" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--module=/usr/lib/node_modules/joplin/node_modules/sqlite3/lib/binding/node-v48-linux-x64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/usr/lib/node_modules/joplin/node_modules/sqlite3/lib/binding/node-v48-linux-x64"
gyp ERR! cwd /usr/lib/node_modules/joplin/node_modules/sqlite3
gyp ERR! node -v v6.11.2
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/nodejs /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/usr/lib/node_modules/joplin/node_modules/sqlite3/lib/binding/node-v48-linux-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/usr/lib/node_modules/joplin/node_modules/sqlite3/lib/binding/node-v48-linux-x64' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/joplin/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at emitTwo (events.js:106:13)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:891:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
node-pre-gyp ERR! System Linux 4.4.0-43-Microsoft
node-pre-gyp ERR! command "/usr/bin/nodejs" "/usr/lib/node_modules/joplin/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /usr/lib/node_modules/joplin/node_modules/sqlite3
node-pre-gyp ERR! node -v v6.11.2
node-pre-gyp ERR! node-pre-gyp -v v0.6.36
node-pre-gyp ERR! not ok

Modifier

J'ai aussi essayé Sudo npm i sqlite3 -g --build-from-source mais obtient la même erreur Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/sqlite3/build' donc il semble que ce soit quelque chose à voir avec sqlite3.

15
laurent

Vous devez récupérer la propriété du répertoire .npm.

Sudo chown -R $(whoami) ~/.npm

et ont besoin de l'autorisation d'écriture dans le répertoire node_modules:

Sudo chown -R $(whoami) /usr/lib/node_modules
25
Abhishek Singh

Une règle de base, comme je l'ai appris, est de ne jamais exécuter npm install avec Sudo. Cela crée des éléments dont root est le propriétaire par opposition à votre nom d'utilisateur.

1
John Mutuma

Accorder une autorisation complète au dossier des modules de noeud

commande

Sudo chmod 777 -R node_modules /

0