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.
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
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.
Accorder une autorisation complète au dossier des modules de noeud
commande
Sudo chmod 777 -R node_modules /