NVM和Yeoman组合使用的一个大坑

发表于 2016-09-05
更新于 2024-05-23
分类于 技术专栏
阅读量 9869
字数统计 2215

这个大坑源于自己喜欢在ubuntu系统上使用root用户操作各种命令得来的,如果你使用的普通用户,那么恭喜你,在使用Yeoman的时候你没有这些坑要踩。

1、使用root用户安装NVM和Yeoman

使用root安装NVM:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.6/install.sh | bash

之后安装cnpm:

npm install -g cnpm --registry=https://registry.npm.taobao.org

再安装Yeoman:

cnpm install -g yo && cnpm install -g generator-react-reflux

之后使用generator生成react-reflux:

# yo react-reflux

接着开始一大堆问题:

1.1、问题一

Error: EACCES: permission denied, open '/root/.config/configstore/insight-yo.json' You don't have access to this file.

谷歌搜索后解决方案:如果不存在.config/configstore文件夹的时候请创建一个;如果存在但是无法访问的话执行chmod命令修改文件的读写属性。

1.2、问题二

readline.js:953
            throw err;
            ^

Error: EACCES: permission denied, open '/root/.nvm/versions/node/v6.4.0/lib/node_modules/.generator-react-reflux_npminstall/node_modules/.1.0.1@arr-flatten/index.js'

可见NVM是每个用户都有自己一个独立的node文件放置目录,所以所有的命令都是在/root/.nvm/这个目录下。

查看该文件的权限:

root@linguang-VirtualBox:~/myGithub/test# ls -al /root/.nvm/versions/node/v6.4.0/lib/node_modules/.generator-react-reflux_npminstall/node_modules/.1.0.1@arr-flatten/index.js
-rwx------ 1 501 dialout 455 3月  11  2015 /root/.nvm/versions/node/v6.4.0/lib/node_modules/.generator-react-reflux_npminstall/node_modules/.1.0.1@arr-flatten/index.js

这个就懵逼了,为什么无缘无故无权限的文件归属于group是dialout(谷歌可以知道该组是属于操作硬件的组别,但不知道为什么这里的组别会是这个),用户是501。太诡异了!即使你后面将该目录下的所有文件设置权限(chmod -R 777 ......)之后还是有坑,因为你可以发现该目录下所有的文件都是这个组别的,超级无语!

1.3、问题三

create bower.json
Error: EACCES, permission denied 'bower.json'

明明是在root可以访问到目录下却提示没有权限创建bower.json。

总之使用root来安装这俩实在是问题多多。所以我们就改用正常的用户来安装。

2、使用normal用户来安装NVM和Yeoman

$ cd /home/linguang/

$ 重复上面的命令

我们查看目录的权限:

linguang@linguang-VirtualBox:~$ ls .nvm/versions/node/v6.4.0/lib/node_modules/.generator-react-reflux_npminstall/node_modules/.1.0.1@arr-flatten/index.js -la
-rwx------ 1 linguang linguang 455 3月  11  2015 .nvm/versions/node/v6.4.0/lib/node_modules/.generator-react-reflux_npminstall/node_modules/.1.0.1@arr-flatten/index.js

这下子文件的归属都是正常的,所以当执行yo react-reflux的时候很顺利,也能够创建bower.json文件。 因为NVM的原理,所以可以存在多套不一样的Node命令以及对应的各种NPM包。

事实证明了yeoman的使用最好不要在root用户的情况下使用,否则会报告一大堆Permission Denied的错误。

公众号关注一波~

微信公众号

关于评论和留言

如果对本文 NVM和Yeoman组合使用的一个大坑 的内容有疑问,请在下面的评论系统中留言,谢谢。

网站源码:linxiaowu66 · 豆米的博客

Follow:linxiaowu66 · Github