Le refus d'une autorisation lors de l'installation du module npm
Je suis un étrange autorisation d'erreur lorsque j'essaie d'installer un module npm. Je commence avec sudo
donc je suis sûr d'y avoir accès, mais pour une raison quelconque, il continue à se plaindre avec une erreur:
pile d'Erreur: EACCES: le refus d'une autorisation, mkdir '/usr/lib/node_modules/joplin/node_modules/sqlite3/build"
J'ai essayé de redémarrer mon ordinateur, et la création d'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
> sqlite3@3.1.9 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 sqlite3@3.1.9 and node@6.11.2 (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é de sudo npm i sqlite3 -g --build-from-source
mais obtenir la même erreur Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/sqlite3/build'
de sorte qu'il semble être quelque chose à faire avec sqlite3.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de récupérer la propriété de l' .npm répertoire.
et ont besoin de la permission d'écrire dans le répertoire node_modules:
/usr/local/lib/node_modules
sudo npm i
a échoué avec l'erreur, mais sanssudo
cela fonctionne!Une règle que j'ai apprise, c'est de ne jamais exécuter
npm install
avec sudo. Qui crée les articles avecroot
être propriétaire plutôt que votre nom d'utilisateur.Donner la permission à un nœud dossier modules
commande
sudo chmod 777 -R node_modules/