NVM和Yeoman组合使用的一个大坑
这个大坑源于自己喜欢在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的错误。
公众号关注一波~
网站源码:linxiaowu66 · 豆米的博客
Follow:linxiaowu66 · Github
关于评论和留言
如果对本文 NVM和Yeoman组合使用的一个大坑 的内容有疑问,请在下面的评论系统中留言,谢谢。