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

时间:2017-09-05 15:25:00

标签: shell npm

我正在尝试使用命令npm install -g typescript安装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而且不知道如何解决这个问题。

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

7 个答案:

答案 0 :(得分:105)

不建议在npm install中使用sudo,请按照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

答案 1 :(得分:17)

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

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

sudo npm install -g [package-name]

针对您的具体案例:

sudo npm install -g typescript

当您在没有-g的情况下进行尝试时,您所做的就是在您所在的任何文件夹中本地安装软件包:

所以:npm install typescript会在您所在的文件夹中创建一个node_modules文件夹。

答案 2 :(得分:5)

我在全球范围内安装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

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

NPM_CONFIG_PREFIX=~/.npm-global

答案 3 :(得分:0)

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

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

3)单击右下角的锁

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

5)选中车轮所有人的值,以阅读写入

6)返回您的终端并尝试再次安装Typescript

答案 4 :(得分:0)

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

  • 应用了recommendation on the npm website
  • 检查了node_modules文件夹的正确权限,没有发现任何错误
  • 在有或没有sudo npm install <package>的情况下使用-g(无论如何我都不建议使用该解决方案),并且没有预期的结果

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

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

这可能也是该问题的解决方案: Error: EACCES: permission denied, access '/usr/local/lib/node_modules' react

答案 5 :(得分:0)

请关注npm网站-https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

”如果尝试全局安装软件包时看到EACCES错误,则可以: 使用节点版本管理器重新安装npm(推荐), 要么 手动更改npm的默认目录“

我遵循推荐的方式-安装了nvm。它解决了我的问题

答案 6 :(得分:-3)

这对我有用。

sudo npm install -g coffee-script

然后

sudo npm install -g typescript