我比平常更谨慎,因为我过去对 npm
的行为感到困惑 .
我在Mac上并通过 brew install node
安装了node.js.
现在我想在命令行上运行 jslint.js
作为命令 jslint
我发现实现此目的的规范方法是使用此输出成功运行的 sudo npm install -g jslint
:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
后来
$ jslint ply.js
zsh: command not found: jslint
由于 /usr/local/share/npm/bin
不在我的 $PATH
.
1)为什么 brew
没有安装路径的全局 npm
bin
路径?也许它确实如此,但是 zsh
确实搞砸了它 . 我可以在哪里找到它?
2)我应该这样做吗? (将 :/usr/local/share/npm/bin
附加到 ~/.zshrc
底部的导出 $PATH
)
看起来这不是需要将它附加到我的zsh启动脚本来设置路径 . 我想在这个特定的例子中,只是 npm install -g
没有在"proper"位置创建正确的符号链接(例如 /usr/local/bin
) .
我想我要做的是在 /usr/local/bin
中为我遇到问题的任何程序手动构建符号链接,它应该足够我的目的 .
8 回答
如果已使用sudo命令链接节点包
然后转到全局安装node_modules的文件夹 .
在Unix系统上,当全局安装时,它们通常放在/ usr / local / lib / node或/ usr / local / lib / node_modules中 . 如果将NODE_PATH环境变量设置为此路径,则可以按节点找到模块 .
Windows XP - %USERPROFILE%\ Application Data \ npm \ node_modules Windows 7 - %AppData%\ npm \ node_modules
然后运行该命令
这将给出所有全局node_modules的列表,您可以轻松查看链接的节点模块 .
sudo brew不再是一个选项,所以如果你在这个时候用brew安装,你会得到2个非常令人讨厌的东西:A:它喜欢安装到
/usr/local/opts
或根据这个/ usr / local / shared . 这不是节点PATH的问题,尤其是当我安装lint时 . B:你有点被sudo命令困住,直到你以这种方式卸载和安装它,或者你可以从Bitnami获得堆栈我建议在堆栈选项上使用此方法,因为如果您有多个项目,它已准备就绪 . 如果你使用premade MEAN堆栈,你将不得不在httpd.conf中设置虚拟主机(这个堆栈比XAMPP更痛苦)通常更新你的额外/ vhosts.conf和/ etc / hosts项目,除非您想要在完成更新后重新启动服务器并重新启动服务器 .
试试跑步:
然后在命令行中运行
express
进行测试 . 这对我有用 .即使在使用-g运行npm时,brew也不应该要求你使用sudo . 这实际上可能会在未来产生更多问题 .
通常情况下,brew或port允许您更新路径,因此不会破坏您的.zshrc,.bashrc,.cshrc或您使用的任何shell风格 .
在这个问题上花了一段时间,PATH开关没有帮助 . 我的问题是这里发现的Homebrew / node / npm错误 - https://github.com/npm/npm/issues/3794
如果您已经使用Homebrew安装了节点,请尝试注意每条评论,这可能不安全 . 它对我有用但可能会产生意想不到的后果 . 似乎最新版本的Homebrew正确安装了npm . 在尝试之前我很可能会尝试
brew update
,brew doctor
,brew upgrade node
等:或者,如果要使用Homebrew安装节点并使用npm,请使用:
扩展你的
PATH
:export PATH = / usr / local / share / npm / bin:$ PATH
这不是一个可怕的想法 . 话虽如此,你不应该这样做 .
运行这个:
OS X上的默认值是
/usr/local
,这意味着npm会将二进制文件符号链接到/usr/local/bin
,这应该已经在PATH
上(特别是如果你使用的是Homebrew) .所以:
npm config set prefix /usr/local
如果是别的话,和不要与npm一起使用
sudo
!根据jslint docs,你应该能够npm install
它 .如果你安装了npm作为sudo(
sudo brew install
),请尝试使用普通的'brew install
重新安装它 . Homebrew应该帮助你保持自由 .我使用brew,前缀已经设置为:
我注意到bin和lib文件夹是root所有,这阻止了通常的非sudo安装,所以我将它们重新拥有给用户
然后我刚刚添加到.bash_profile的路径,该路径位于/ Users / [user]
任何人都有同样的问题,这与brew和npm之间的冲突有关请检查此解决方案https://gist.github.com/DanHerbert/9520689