如何解决此错误“ gyp ERR!堆栈错误:EACCES:权限被拒绝,mkdir'/ home / mohamedessam / Desktop / NodeJs / node_modules / bcrypt / build'”

时间:2019-07-23 11:22:11

标签: node.js linux npm

我正在尝试在Ububtu 18.04上安装bcrypt。我正在使用以下命令进行安装:  sudo npm i --save bcrypt 而我得到一个错误。 这是报告的错误:

> bcrypt@3.0.6 install /home/mohamedessam/Desktop/NodeJs/node_modules
/bcrypt
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Pre-built binaries not installable for bcrypt@3.0.6 and 
node@8.10.0 (node-v57 ABI, glibc) (falling back to source compile with 
node-gyp) 

node-pre-gyp WARN Hit error EACCES: permission denied, mkdir '/home
/mohamedessam/Desktop/NodeJs/node_modules/bcrypt/lib' 

gyp ERR! configure error 

gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/mohamedessam
/Desktop/NodeJs/node_modules/bcrypt/build'

gyp ERR! System Linux 4.15.0-54-generic

gyp ERR! command "/usr/bin/node" "/usr/local/lib/node_modules
/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-
build" "--module=/home/mohamedessam/Desktop/NodeJs/node_modules/bcrypt
/lib/binding/bcrypt_lib.node" "--module_name=bcrypt_lib" "--
module_path=/home/mohamedessam/Desktop/NodeJs/node_modules/bcrypt
/lib/binding" "--napi_version=1" "--node_abi_napi=napi" "--
napi_build_version=0" "--node_napi_label=node-v57"

gyp ERR! cwd /home/mohamedessam/Desktop/NodeJs/node_modules/bcrypt

gyp ERR! node -v v8.10.0

gyp ERR! node-gyp -v v3.8.0

gyp ERR! not ok 

node-pre-gyp ERR! build error 

node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/local
/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure 
--fallback-to-build --module=/home/mohamedessam/Desktop/NodeJs
/node_modules/bcrypt/lib/binding/bcrypt_lib.node --module_name=bcrypt_lib 
--module_path=/home/mohamedessam/Desktop/NodeJs/node_modules/bcrypt
/lib/binding --napi_version=1 --node_abi_napi=napi --napi_build_version=0 
--node_napi_label=node-v57' (1)

node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/home
/mohamedessam/Desktop/NodeJs/node_modules/node-pre-gyp/lib
/util/compile.js:83:29)

node-pre-gyp ERR! stack     at emitTwo (events.js:126:13)

node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:214:7)

node-pre-gyp ERR! stack     at maybeClose 
(internal/child_process.js:925:16)

node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit 
(internal/child_process.js:209:5)

node-pre-gyp ERR! System Linux 4.15.0-54-generic

node-pre-gyp ERR! command "/usr/bin/node" "/home/mohamedessam/Desktop
/NodeJs/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"

node-pre-gyp ERR! cwd /home/mohamedessam/Desktop/NodeJs/node_modules
/bcrypt

node-pre-gyp ERR! node -v v8.10.0

node-pre-gyp ERR! node-pre-gyp -v v0.12.0

node-pre-gyp ERR! not ok 

Failed to execute '/usr/bin/node /usr/local/lib/node_modules
/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build 
--module=/home/mohamedessam/Desktop/NodeJs/node_modules/bcrypt/lib/binding
/bcrypt_lib.node --module_name=bcrypt_lib --module_path=/home/mohamedessam
/Desktop/NodeJs/node_modules/bcrypt/lib/binding --napi_version=1 
--node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v57' 
(1)

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 
(node_modules/fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for 
fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: 
{"os":"linux","arch":"x64"})


npm ERR! code ELIFECYCLE

npm ERR! errno 1

npm ERR! bcrypt@3.0.6 install: `node-pre-gyp install --fallback-to-build`

npm ERR! Exit status 1

npm ERR! 

npm ERR! Failed at the bcrypt@3.0.6 install script.

npm ERR! This is probably not a problem with npm. It is likely 
additional logging output above.

npm似乎没有安装bcrypt的权限。 在线查询之后,我还尝试了以下命令:

sudo chown -R $(whoami) /home/mohamedessam/Desktop/NodeJs/node_modules/,
sudo npm i --unsafe-perm

但是它给了我同样的错误。如何在oredr中成功安装它?

1 个答案:

答案 0 :(得分:0)

解决全球安装软件包时的EACCES权限错误 如果在尝试全局安装软件包时看到EACCES错误,则可以:

使用节点版本管理器重新安装npm(推荐), 要么 手动更改npm的默认目录 使用节点版本管理器重新安装npm 这是避免权限问题的最佳方法。要使用节点版本管理器重新安装npm,请按照“下载并安装Node.js和npm”中的步骤进行操作。在安装节点版本管理器之前,不需要删除当前版本的npm或Node.js。

手动更改npm的默认目录§ 注意:本部分不适用于Microsoft Windows。 为了最大程度地减少权限错误的可能性,您可以将npm配置为使用其他目录。在此示例中,您将在主目录中创建并使用隐藏目录。

备份计算机。 在命令行的主目录中,创建用于全局安装的目录: mkdir〜/ .npm-global 配置npm以使用新的目录路径: npm config设置前缀'〜/ .npm-global' 在您喜欢的文本编辑器中,打开或创建〜/ .profile文件并添加以下行: 导出PATH =〜/ .npm-global / bin:$ PATH 在命令行上,更新系统变量: 来源〜/ .profile 要测试新配置,请在不使用sudo的情况下全局安装软件包: npm install -g jshint 您可以使用相应的ENV变量来代替第2-4步(例如,如果您不想修改〜/ .profile):

NPM_CONFIG_PREFIX=~/.npm-global