关于linux系统下使用npm全局安装hexo报错的问题

最近我的电脑换成了ubuntu系统,然后安装完node以后开始装hexo,代码如下:

npm install hexo-cli -g  

然后控制台出现如下错误:

npm ERR! path ../lib/node_modules/hexo-cli/bin/hexo
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall symlink
npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules/hexo-cli/bin/hexo' -> '/usr/local/bin/hexo'
npm ERR!  { Error: EACCES: permission denied, symlink '../lib/node_modules/hexo-cli/bin/hexo' -> '/usr/local/bin/hexo'
npm ERR!   cause: 
npm ERR!    { Error: EACCES: permission denied, symlink '../lib/node_modules/hexo-cli/bin/hexo' -> '/usr/local/bin/hexo'
npm ERR!      errno: -13,
npm ERR!      code: 'EACCES',
npm ERR!      syscall: 'symlink',
npm ERR!      path: '../lib/node_modules/hexo-cli/bin/hexo',
npm ERR!      dest: '/usr/local/bin/hexo' },
npm ERR!   stack: 'Error: EACCES: permission denied, symlink \'../lib/node_modules/hexo-cli/bin/hexo\' -> \'/usr/local/bin/hexo\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'symlink',
npm ERR!   path: '../lib/node_modules/hexo-cli/bin/hexo',
npm ERR!   dest: '/usr/local/bin/hexo' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/ggboy/.npm/_logs/2017-09-06T12_32_32_667Z-debug.log

有人能说一下这是怎么回事吗?node的版本号是8.4.0npm的版本号是5.3.0(ps:我是用node源码安装的nodejs

阅读 5.1k
2 个回答

目录没有写入权限,可以使用sudo暴力解决,但极不推荐。

npm可以设置全局包目录的位置,设置到有权限的位置就好了。手机答题不方便查命令。

指定npm全局安装包时的安装位置,一般在家目录范围下,这样写入权限就不是问题:

$ cd ~ && mkdir .node_modules_global
$ npm config set prefix=$HOME/.node_modules_global

查看效果:

$ npm config get prefix
/home/<user_name>/.node_modules_global
$ cat .npmrc
prefix=/home/<user_name>/.node_modules_global

安装最新npm:

npm install npm --global

设置环境变量,使安装的包能够被终端环境寻找到,添加下面语句到.profile、.bash_profile或.bashrc并重启终端:

export PATH="$HOME/.node_modules_global/bin:$PATH"

查看效果:

which npm

再试试安装你的包

首先,你应该报一下 npm 的版本号
然后,这个问题应该去看看 issue,给你找了一个差不多如果不想切版本可以试试:

root@xxxxxxxxxx:~# npm config set user 0
root@xxxxxxxxxx:~# npm config set unsafe-perm true
root@xxxxxxxxxx:~# npm install -g hexo

如果不想这样安装试一下把版本降到 4.x:

root@xxxxxxxxxx:~# npm install -g npm@4.6.1
root@xxxxxxxxxx:~# npm install hexo-cli -g

我记得好像 npm 版本大于 5 的话装 hexo 会有问题(我没找到那个 issue)。
参考:

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏