nodejs和angular的yeoman权限问题

时间:2014-05-17 22:02:13

标签: node.js angularjs ubuntu

我正在尝试用自耕农启动一个有角度的网络应用程序,但在尝试安装新生成器时我得到了许可问题。我可以绕过并使用sudo安装生成器但是在运行

时我得到权限错误
**yo** angular

我推断它是因为它试图访问当前用户没有权限的全局npm模块,而且我不能用sudo运行Yo。我做了很多谷歌搜索,他们都涉及某种类型的黑客与.bashrc中的NODE_PATH或将节点模块移动到主目录。有没有人为这个问题找到了一个简单的解决方案。

以下是截图中的问题:

enter image description here

安装好

enter image description here

当我尝试在没有sudo投诉的情况下安装发电机时.. enter image description here

使用sudo pass安装。 enter image description here

然后最后当我尝试运行 yo 时,它会中断...我相信它是因为以用户身份运行并且我已经使用sudo权限安装了所有内容。我怎么能超越这个?

enter image description here

1 个答案:

答案 0 :(得分:1)

我猜,它之所以破坏,是因为整个目录树都是以超级用户身份创建的。

您提到的有关使用NODE_PATH和主目录的黑客攻击并不是黑客攻击。它们的存在也是出于同样的原因。告诉节点在哪里寻找包。 .bashrc是你应该改变这种shell变量的地方。

假设您向~/.node_modules添加了NODE_PATH,那么您可以安装所有" global"在那里。您还可以更改/usr/local上的权限。但在Linux世界上不推荐。

我还强烈建议不要在npm中使用全局安装。使用-g和npm link在开发时很方便,但你不应该依赖它们。当您忘记在package.json上添加软件包时,您可以在代码中引入细微的错误,但它是全局安装的。

您可以在./node_modules/.bin/目录中找到所有可执行的包,而不是全局安装它。

但是,假设您不想一直输入./node_modules/.bin/yo,您可以在.bashrc上创建别名。

alias yo="$PWD/node_modules/.bin/yo"

它会像预期的那样工作,如果没有安装yo软件包,就会出错。