「npm」安装依赖时,报错Error: EACCES: permission denied

背景

运行环境:CentOS Linux release 7.5.1804
node版本:v16.19.0
运行时执行:npm install
报错如下

 vue-demi@0.13.11 postinstall /root/h-management-prototype/node_modules/@nuxtjs/i18n/node_modules/vue-demi
 node ./scripts/postinstall.js

node:internal/fs/utils:347
    throw err;
    ^

Error: EACCES: permission denied, open '/root/h-management-prototype/node_modules/@nuxtjs/i18n/node_modules/vue-demi/lib/index.cjs'
    at Object.openSync (node:fs:590:3)
    at Object.writeFileSync (node:fs:2202:35)
    at copy (/root/h-management-prototype/node_modules/@nuxtjs/i18n/node_modules/vue-demi/scripts/utils.js:24:6)
    at switchVersion (/root/h-management-prototype/node_modules/@nuxtjs/i18n/node_modules/vue-demi/scripts/utils.js:52:3)
    at Object.<anonymous> (/root/h-management-prototype/node_modules/@nuxtjs/i18n/node_modules/vue-demi/scripts/postinstall.js:15:3)
    at Module._compile (node:internal/modules/cjs/loader:1165:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
    at Module.load (node:internal/modules/cjs/loader:1043:32)
    at Function.Module._load (node:internal/modules/cjs/loader:878:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  errno: -13,
  syscall: 'open',
  code: 'EACCES',
  path: '/root/h-management-prototype/node_modules/@nuxtjs/i18n/node_modules/vue-demi/lib/index.cjs'
}

报错原因

在 Linux 系统中,root 用户并不会自动获得 npm 包的安装权限,需要手动设置权限

解决办法

可以通过在执行 npm 命令时添加 --unsafe-perm=true 参数来解决该问题。该参数会告诉 npm 在安装包的过程中不要检查权限,直接以 root 用户身份执行。

npm i --unsafe-perm=true

注意

使用 --unsafe-perm=true 参数会使 npm 以 root 用户身份执行,这可能会对系统造成潜在的安全风险。因此,建议仅在必要时使用该参数。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值