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

jjo*_*lon 46 shell npm

我正在尝试使用命令安装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
Run Code Online (Sandbox Code Playgroud)

另外我也运行npm install typescript(没有-g),但没有'工作,或存在任何其他方式来安装打字稿?我的操作系统是Linux Ubuntu 16.04.我很少使用node,也不知道喜欢解决这个问题.

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

Eul*_*ack 156

不推荐在npm install中使用sudo,请按照npmjs官方文档中的步骤进行操作:)

为全局安装创建一个目录:

mkdir ~/.npm-global
Run Code Online (Sandbox Code Playgroud)

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

npm config set prefix '~/.npm-global'
Run Code Online (Sandbox Code Playgroud)

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

export PATH=~/.npm-global/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

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

source ~/.profile
Run Code Online (Sandbox Code Playgroud)

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

npm install -g typescript
Run Code Online (Sandbox Code Playgroud)

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

  • 不应该执行第3步`export PATH ="〜/ .npm-global/bin:$ PATH"`放入`.bash_aliases`(包含在`.bashrc`中,或直接放在那里......)进行持久化? (4认同)
  • 你救了我的一天伙计。它完美地工作,谢谢。 (2认同)
  • 如果您使用 Z shell (Zsh),则将 `export PATH=~/.npm-global/bin:$PATH` 添加到 `~/.zshrc` 中,然后获取该文件 (2认同)

Jua*_*uan 15

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

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

sudo npm install -g [package-name]

针对您的具体情况:

sudo npm install -g typescript

当你尝试它而没有-g你正在做的就是在你所在的任何文件夹中本地安装包:

so:npm install typescriptnode_modules在您所在的文件夹中创建一个文件夹.

  • 您不应该在安装NPM时使用sudo. (20认同)

Vis*_*tel 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