Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/npm/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs npm/yeoman安装发电机,无sudo_Angularjs_Npm_Sudo_Yeoman - Fatal编程技术网

Angularjs npm/yeoman安装发电机,无sudo

Angularjs npm/yeoman安装发电机,无sudo,angularjs,npm,sudo,yeoman,Angularjs,Npm,Sudo,Yeoman,我尝试在没有sudo的情况下使用Yo()安装generator angularjs: npm install -g generator-angular 我得到: Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular' 当我输入sudo-yo时,yo告诉我不应该使用sudo(这是完全可以理解的) 我有一个~/node\u modules目录-为什么不在那里安装它的软件包?生成器设计为全局安装。否则,您总是必须安装每个项目中要

我尝试在没有sudo的情况下使用Yo()安装generator angularjs:

npm install -g generator-angular
我得到:

Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
当我输入
sudo-yo
时,yo告诉我不应该使用sudo(这是完全可以理解的)


我有一个
~/node\u modules
目录-为什么不在那里安装它的软件包?

生成器设计为全局安装。否则,您总是必须安装每个项目中要使用的生成器,这是不必要的痛苦。此外,您不会看到可爱的
yo
菜单,其中列出了所有可用的生成器(当然,除非您都在本地安装):

为全局安装设置npm 那么,我们如何让npm在全球范围内安装软件包呢?正如你正确地说的,你永远不应该用sudo运行
yo
。这个问题有很多问题,你可以花上几个小时虔诚地讨论它们的利弊

我个人不喜欢将我的用户包安装到全局
/usr/
文件夹中
/usr/
用于计算机上所有用户共享的软件。即使它只使用机器,仍然有充分的理由尊重Unix文件系统层次结构的设计方式。例如,如果您在某一点决定擦除整个节点安装

我最喜欢的方法是启用
npm
在全球范围内安装软件包,而无需中断
$HOME
。这和跑步一样容易

echo 'prefix = ~/.node' >> ~/.npmrc
在你当地的贝壳里。之后,您需要调整$PATH,通过调整您最喜欢的shell的配置来指向全局节点可执行文件的新安装目标。例如加入

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

到您的
~/.bashrc
。在那之后,您可以在没有sudo的情况下愉快地运行
npm install-g generator angular
,而不会遇到权限冲突,如果某些东西完全损坏,您希望从头开始,你所需要做的就是删除你的
~/.node
目录。

多亏了@passy,我终于在Ubuntu13.04上实现了这个功能(以防有人遇到类似的设置问题),如下所示:

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
正在尝试运行:

npm install -g yo
导致

Error: EACCES, mkdir '/usr/lib/node_modules/yo'
固定使用:

echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc 
. ~/.bashrc
sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
运行:

yo webapp
导致:

Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'
固定使用:

echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc 
. ~/.bashrc
sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
您好,在我的例子中(在ubuntu 12.04上),在~/.npmrc中添加前缀并没有改变任何东西


如果是这样,请自己构建节点包,并将其安装在/opt/node或/home/user/.node中。

我遇到了一个几乎相同的错误,其中涉及我先前安装的项目根目录中的rogue
.yo rc.json
文件。Yeoman在安装的中途将cwd从安装目录切换到根目录,但只输出EACCESS permissions错误,没有显示安装目录为
/
的任何详细信息。花了很长时间才弄清楚原因,并涉及到通过Yeoman源代码进行调试,但我最终了解到Yeoman将在目录树中查找,直到找到
.yo rc.json
,并通过调用chdir到新位置来生成代码

Yeoman可能应该检查用户是否具有该目录的写入权限。或者,它可以在输出中提到cwd已经更改,或者如果发现
.yo rc.json
与cwd不同,则打印安装目录的名称

用于查找rogue.yo-rc.json文件的命令

sudo find/-name.yo-rc.json

从中显示命令:

yo doctor

在我的例子中,$NODE_PATH(在我的例子中,Ubuntu 14.04是在/etc/profile.d中定义的)与npm root不同。在$NODE\u路径中添加npm root解决了这个问题。

我一直在尝试让
yeoman
更好地使用我的
vagrant
框,这就是我在
ubuntu
上安装
npm
包而不安装
sudo

1.创建用于存储全局包的目录
$mkdir“${HOME}/.npm包”

2.告诉npm将全球安装的软件包放在哪里 将此代码段插入您的
~/.npmrc
文件:
prefix=${HOME}/.npm包

3.确保
npm
可以找到已安装的
二进制文件等
将此代码段插入您的
.bashrc/.zshrc
: 4.运行以下命令或重新启动终端
$source~/.bashrc


希望这能帮助那些发现自己处于类似情况的人。

您从哪里运行
yo
路径?设置路径时,路径前面不应该有一个“$”。(我试图执行编辑,但有一条“编辑必须至少6个字符”的无效规则,因此保存被拒绝。)@passy我仍然有访问权限问题,但似乎设置了前缀:npm config get prefix=>/home/friedrich/.node。知道为什么吗?~/。节点在路径中:-/I刚刚运行了sudo npm update-gf,它修复了它。我做了什么,在这种情况下使用sudo还好吗?我还需要添加:sudo chown-R'username'~/.npm第二个命令应该是
echo'export PATH=$HOME/.node/bin:$PATH'>~/.bashrc
对于mac,我必须更改为
$USER:staff
,或者只是
$USER:USER
我只有“~/.node-gyp”文件夹不是OS X Mavericks中的“~/node”。需要重新启动。另一种方法是在.bashrc中添加$NODE_PATH=$NODE_PATH:/usr/local/lib/NODE_模块。