我正在尝试用自耕农启动一个有角度的网络应用程序,但在尝试安装新生成器时我得到了许可问题。我可以绕过并使用sudo安装生成器但是在运行
时我得到权限错误**yo** angular
我推断它是因为它试图访问当前用户没有权限的全局npm模块,而且我不能用sudo运行Yo。我做了很多谷歌搜索,他们都涉及某种类型的黑客与.bashrc中的NODE_PATH或将节点模块移动到主目录。有没有人为这个问题找到了一个简单的解决方案。
以下是截图中的问题:
哟安装好
当我尝试在没有sudo投诉的情况下安装发电机时..
使用sudo pass安装。
然后最后当我尝试运行 yo 时,它会中断...我相信它是因为哟以用户身份运行并且我已经使用sudo权限安装了所有内容。我怎么能超越这个?
答案 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软件包,就会出错。