【问题标题】:yeoman permission issue with nodejs and angularnodejs和角度的yeoman权限问题
【发布时间】:2014-05-18 07:18:25
【问题描述】:
我正在尝试使用 yeoman 启动 Angular Web 应用程序,但在尝试安装新生成器时出现权限问题。我可以绕过并使用 sudo 安装生成器,但运行时出现权限错误
**yo** angular
我推断它是因为它试图访问当前用户无权访问的全局 npm 模块,并且我无法使用 sudo 运行 Yo。我已经做了很多谷歌搜索,它们都涉及某种类型的 .bashrc 中的 NODE_PATH 或将节点模块移动到主目录的黑客攻击。有没有人找到解决这个问题的简单方法。
下面是我的截图问题:
哟安装正常
当我尝试安装生成器时没有 sudo 抱怨..
使用 sudo 通行证安装。
最后,当我尝试运行 yo angular 时,它会中断。我相信这是因为 yo 以用户身份运行,并且我已经使用 sudo 权限安装了所有东西。我怎样才能克服这个问题?
【问题讨论】:
标签:
node.js
angularjs
ubuntu
【解决方案1】:
我猜它中断的原因是因为整个目录树是作为超级用户创建的。
你提到的关于使用NODE_PATH 和主目录的黑客不是黑客。它们的存在也是出于同样的原因。告诉节点在哪里寻找包。而.bashrc 是您应该更改此类 shell 变量的地方。
假设您添加了~/.node_modules 给您NODE_PATH,那么您可以在其中安装所有“全局”。您还可以更改/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 包,你会得到一个错误。