错误:EACCES:权限被拒绝,访问'/ usr / lib / node_modules'


74

我正在尝试使用command安装typescript npm install -g typescript,并返回以下错误:

    npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
    npm ERR!     at Error (native)
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'access',
    npm ERR!   path: '/usr/lib/node_modules' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.
    npm ERR! Linux 4.4.0-93-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "typescript"
    npm ERR! node v6.11.2
    npm ERR! npm  v3.10.10
    npm ERR! path npm-debug.log.1024969454
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall open

    npm ERR! Error: EACCES: permission denied, open 'npm-debug.log.1024969454'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, open 'npm-debug.log.1024969454'
    npm ERR!     at Error (native)
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'open',
    npm ERR!   path: 'npm-debug.log.1024969454' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.

    npm ERR! Please include the following file with any support request:
    npm ERR!     /npm-debug.log
    jramirez@jramirez:/$ ^C
    jramirez@jramirez:/$ npm install typescript
    npm WARN checkPermissions Missing write access to /
    /
    └── typescript@2.5.2 

    npm WARN enoent ENOENT: no such file or directory, open '/package.json'
    npm WARN !invalid#1 No description
    npm WARN !invalid#1 No repository field.
    npm WARN !invalid#1 No README data
    npm WARN !invalid#1 No license field.
    npm ERR! Linux 4.4.0-93-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "typescript"
    npm ERR! node v6.11.2
    npm ERR! npm  v3.10.10
    npm ERR! path /
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall access

    npm ERR! Error: EACCES: permission denied, access '/'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, access '/'
    npm ERR!     at Error (native) errno: -13, code: 'EACCES', syscall: 'access', path: '/' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.
    npm ERR! Linux 4.4.0-93-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "typescript"
    npm ERR! node v6.11.2
    npm ERR! npm  v3.10.10
    npm ERR! path npm-debug.log.2387664261
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall open

    npm ERR! Error: EACCES: permission denied, open 'npm-debug.log.2387664261'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, open 'npm-debug.log.2387664261'
    npm ERR!     at Error (native)
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'open',
    npm ERR!   path: 'npm-debug.log.2387664261' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.

    npm ERR! Please include the following file with any support request:
    npm ERR!     /npm-debug.log

另外,我也运行npm install typescript(不带-g),但是不起作用,还是存在其他安装打字稿的方式?我的操作系统是Linux Ubuntu 16.04。我很少使用node,也不知道要解决此问题。

我的问题是:确切地说,哪些目录需要这些权限?


4
试试sudo npm install -g typescript
Juan Juan

Answers:


244

不建议将sudo与npm install一起使用,而应遵循npmjs官方文档中的步骤:)

创建用于全局安装的目录:

mkdir ~/.npm-global

配置npm以使用新的目录路径:

npm config set prefix '~/.npm-global'

打开或创建〜/ .profile文件并添加以下行:

export PATH=~/.npm-global/bin:$PATH

返回命令行,更新系统变量:

source ~/.profile

测试:在不使用sudo的情况下全局下载软件包。

npm install -g typescript

资料来源:https : //docs.npmjs.com/getting-started/fixing-npm-permissions


2
你救了我的老兄。运行正常,谢谢。
阿尔梅特

4
不应将第3步export PATH="~/.npm-global/bin:$PATH"放入.bash_aliases(包含在中.bashrc,或直接在其中...)以保持持久性?
弗兰克·诺克

推荐的解决方案(Y)
Hassan Ahmed

1
这是一个更好的答案。不得摆弄sudo目录权限。
特伦斯·庞塞

2
如果您使用的是Z shell(Zsh),则将其添加export PATH=~/.npm-global/bin:$PATH到您~/.zshrc的文件中,然后再获取文件
Homam Bahrani

15

在ubuntu中安装全局软件包时,在写入usr/bin文件夹时需要特殊的写入权限。出于安全原因。

因此,每次安装全局软件包时,请使用:

sudo npm install -g [package-name]

针对您的具体情况:

sudo npm install -g typescript

当您尝试不做-g任何事情时,就是将软件包本地安装在您所在的任何文件夹中:

因此:npm install typescriptnode_modules在您所在的文件夹中创建一个文件夹。


1
难道是可怕的错误去一个chmod g+rw/usr/lib/node_modules/呢?
弗兰克·诺克

24
不应将sudo与NPM安装一起使用。
Abdalla Arbab

sudo不应该与NPM一起使用的概念是错误的,并且与在UNIX Filesystem Hierarchy Standard指定的位置中安装全局二进制文件的范例不符。
惠勒

6

我在全球范围内安装webpack服务器时遇到相同的问题,请使用步骤解决我的问题,请为您工作。

上面提到的步骤那里:开始之前备份计算机。

创建用于全局安装的目录:

1。 mkdir ~/.npm-global

配置npm以使用新的目录路径:

2。 npm config set prefix '~/.npm-global'

打开或创建〜/ .profile文件并添加以下行:

3。 export PATH=~/.npm-global/bin:$PATH

返回命令行,更新系统变量:

4。 source ~/.profile

测试:在不使用sudo的情况下全局下载软件包。

npm install -g jshint

可以使用相应的ENV变量代替步骤2-4(例如,如果您不想修改〜/ .profile):

NPM_CONFIG_PREFIX=~/.npm-global


1

不太确定这是否是解决此问题的正确方法,但是我希望这可以帮助其他已经尝试过以下操作的类似情况的人:

  • 应用了 在npm网站上建议
  • 检查了正确的权限 node_modules文件夹没有发现任何错误
  • 使用sudo npm install <package>(无论如何我都不建议使用的解决方案)是否带有或-g没有预期的结果

当我注意到当我尝试使用安装axios程序包时npm,指出了该问题的解决方案,其中包含整个项目的目录已在Visual Studio Code中打开。因此,我将其关闭并再次尝试安装。令人惊讶的是,这种装置的魅力十足。

为了尝试复制相同的问题,我在WSL上使用了Ubuntu 18.04 LTS(也许与Windows权限有关)

这也可能是该问题的解决方案: 错误:EACCES:权限被拒绝,访问'/ usr / local / lib / node_modules'反应


0

1)转到目录“ / usr / local / lib / node_modules

2)单击文件夹,然后右键单击获取信息

3)点击右下角的锁

4)输入您的窗口密码以解锁

5)检查双方的价值大家读取写入

6)返回您的终端,然后尝试再次安装Typescript


wheel是BSD / RedHat的东西,而不是在基于Debian的系统中,例如Ubuntuunix.stackexchange.com/questions/4460/…–
Novaterata,


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.