「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 用户身份执行,这可能会对系统造成潜在的安全风险。因此,建议仅在必要时使用该参数。

猜你喜欢

转载自blog.csdn.net/zora_55/article/details/130337725
今日推荐