npm全局路径前缀

时间:2013-02-10 23:42:16

标签: macos node.js npm zsh

我比平常更谨慎,因为我过去对npm的行为感到困惑。

我在Mac上并通过brew install node安装了node.js.

现在我想在命令行上运行jslint.js作为命令jslint我发现完成此操作的规范方法是使用此输出成功运行的sudo npm install -g jslint:< / p>

$ 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附加到我$PATH底部的导出~/.zshrc

这似乎不是正确的方法,因为如果我稍后安装其他东西(使用Homebrew或其他东西),我将需要将它附加到我的zsh启动脚本来设置路径。我想在这个特定的例子中,只是npm install -g没有在正确的位置制作正确的符号链接(例如/usr/local/bin)。

我认为我要做的是在/usr/local/bin内为我遇到问题的任何程序手动构建符号链接,它应该足够我的目的。

编辑:我在2019年对此进行了更新,因为这个老问题很受欢迎,但现在在我的个人工作流程以及如何最好地安装节点和管理方面已经过时了它的各种依赖。

我的个人工作流程现在使用从nodejs.org获得的安装程序在系统上安装节点。我实际上比自制软件包本身更信任它,因为它最了解如何管理文件。如果要将系统节点从8.10更改为10.15,无论是在Mac还是Windows上,只需从nodejs.org为您的操作系统下载安装程序10.15。根据我的经验,尝试升级通过自制软件安装的节点一直被证明是一种更难的方法。

另外,需要指出的最重要的一点是,我在上面的jslint例子中显示的使用sudo是非常不鼓励的;我相当确定不应该使用超级用户以任何方式安装或交互自制程序包。它不应该是必要的,并且会导致文件许可令人头疼!

此外,我推荐ESLint而不是jslint,并且多年来没有使用过jslint。

11 个答案:

答案 0 :(得分:277)

使用:

扩展您的PATH
export PATH=/usr/local/share/npm/bin:$PATH

不是一个可怕的想法。话虽如此,你不应该这样做。

运行:

npm config get prefix

OS X上的默认值为/usr/local,这意味着npm会将二进制文件符号链接到/usr/local/bin,这应该已经在PATH上(特别是如果您使用的是Homebrew)。

所以:

  1. npm config set prefix /usr/local如果是其他内容,
  2. 请勿使用sudo和npm!根据{{​​3}},您应该能够npm install
  3. 如果您将npm安装为sudo(sudo brew install),请尝试使用普通的“brew install重新安装它。 Homebrew应该帮助你sudo - 免费。

答案 1 :(得分:7)

在这个问题上花了一段时间,PATH开关没有帮助。我的问题是在这里找到的Homebrew / node / npm错误 - https://github.com/npm/npm/issues/3794

如果您已经使用Homebrew安装了节点,请尝试****请注意,这可能不安全。它对我有用但可能会产生意想不到的后果。似乎最新版本的Homebrew正确安装了npm。我很可能会在尝试****之前尝试brew updatebrew doctorbrew upgrade node等:

npm update -gf

或者,如果您想使用Homebrew安装节点并使用npm,请使用:

brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh

答案 2 :(得分:5)

我使用brew,前缀已经设置为:

$ npm config get prefix
/Users/[user]/.node

我注意到bin和lib文件夹归root所有,这阻止了通常的非sudo安装,因此我将它们重新拥有给用户

$ cd /Users/[user]/.node
$ chown -R [user]:[group] lib
$ chown -R [user]:[group] bin

然后我刚刚添加了路径到我的.bash_profile,它位于/ Users / [user]

PATH=$PATH:~/.node/bin

答案 3 :(得分:3)

即使使用-g运行npm,

brew也不要求你使用sudo。这可能会在未来产生更多问题。

通常情况下,brew或port允许您更新路径,因此不会有使用.zshrc,.bashrc,.cshrc或您使用的任何shell样式的麻烦。

答案 4 :(得分:1)

任何人都有同样的问题,这与brew和npm之间的冲突有关 请检查此解决方案this page

答案 5 :(得分:0)

尝试跑步:

PATH=$PATH:~/npm/bin

然后在命令行中运行express进行测试。这对我有用。

答案 6 :(得分:0)

如果已使用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

然后运行命令

ls -l

这将给出所有全局node_modules的列表,您可以轻松查看链接的节点模块。

答案 7 :(得分:0)

sudo brew不再是一个选项,所以如果你在这个时候用brew安装,你将会得到两个非常令人讨厌的东西: 答:它喜欢安装到/usr/local/opts或根据这个/ usr / local / shared。这开始并不是什么大问题,但我遇到了节点路径问题,特别是当我安装了lint时。 B:在你以这种方式卸载和安装它之前,你会遇到sudo命令,或者你可以从Bitnami获得堆栈

我建议在堆栈选项上使用此方法,因为如果您有多个项目,它已准备就绪。如果你使用premade MEAN堆栈,你将不得不在httpd.conf中设置虚拟主机(这个堆栈比XAMPP更痛苦)通常更新你的额外/ vhosts.conf和/ etc / hosts项目,除非您想要在完成更新后重新启动服务器并重新启动服务器。

答案 8 :(得分:0)

通过执行以下操作,我设法修复了Vue Cli no命令错误:

  • 在终端sudo nano ~/.bash_profile中编辑您的bash个人资料。
  • 添加export PATH=$PATH:/Users/[your username]/.npm-packages/bin
  • 保存文件并重新启动终端
  • 现在您应该可以使用vue create my-projectvue --version等。

我从https://cli.vuejs.org/安装了最新的Vue Cli之后执行了此操作

我通常使用yarn,但是我在npm npm install -g @vue/cli上全局安装了它。如果需要yarn global add @vue/cli

,也可以使用yarn。

注意:如果您已经安装了npm uninstall -g vue-cli

,则可能必须先将其全局卸载。

希望这会有所帮助!

答案 9 :(得分:0)

简单的解决方案是...

只需放在命令下面:

  1. sudo npm config get prefix

    如果不是类似/usr/local的东西,则需要使用以下命令对其进行修复。

  2. sudo npm config set prefix /usr/local ...

现在可以100%正常工作

答案 10 :(得分:0)

我从 M1 Apple Silicon 上的自制软件卸载了 node,而是使用了 https://nodejs.org/en/download/ 的 Mac 安装程序。这样做之后,我就可以使用 npm 和 npx 进行安装了。

相关问题