我正在尝试在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中成功安装它?
答案 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