首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装npm模块时被拒绝的权限

安装npm模块时被拒绝的权限
EN

Stack Overflow用户
提问于 2017-08-05 10:28:44
回答 3查看 27.2K关注 0票数 28

当我试图安装npm模块时,我得到了一个奇怪的权限错误。我用sudo启动它,所以我确信我确实可以访问它,但出于某种原因,它总是抱怨错误:

堆栈错误: EACCES:权限被拒绝,mkdir '/usr/lib/node_modules/joplin/node_modules/sqlite3/build‘

我尝试过重新启动我的计算机,并使用chmod 777创建了一个目录/usr/lib/node_modules/joplin,但是它仍然不能工作。

代码语言:javascript
复制
$ 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

编辑

我也尝试过sudo npm i sqlite3 -g --build-from-source,但是获得了相同的错误Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/sqlite3/build',所以它似乎与sqlite3有关。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-05 10:53:39

您需要恢复对.npm目录的所有权。

代码语言:javascript
复制
sudo chown -R $(whoami) ~/.npm

并需要node_modules目录中的写权限:

代码语言:javascript
复制
sudo chown -R $(whoami) /usr/lib/node_modules
票数 52
EN

Stack Overflow用户

发布于 2019-06-09 05:01:39

正如我所了解的,经验法则是永远不要使用sudo运行npm install。这将创建以root为所有者的项,而不是您的用户名。

最好将目录的所有权更改为用户名。$(whoami)

票数 5
EN

Stack Overflow用户

发布于 2019-06-03 08:25:25

对节点模块文件夹授予完全权限

命令

sudo 777 -R节点模块/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45520853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档