全局路径前缀

我比平时更加谨慎,因为我一直困惑的行为 npm在过去。

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

现在,我想在命令行上以命令 jslint的形式运行 jslint.js,我发现完成这一任务的规范方法是 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附加到导出的 $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 示例的 npm 安装中显示的 sudo 的使用是非常不鼓励的; 我相当肯定,自制软件包不应该使用超级用户以任何方式安装或交互。它不应该是必要的,并将导致文件权限头痛!

此外,我推荐使用 ESLint 而不是 jslint,并且已经很多年没有使用 jslint 了。

243201 次浏览

即使在使用 -g 运行 npm 时,brew 也不应该要求您使用 sudo。这实际上可能会在未来制造更多的问题。

通常,brew 或 port 允许您更新路径,这样它就不会冒险扰乱您的。你好。巴希尔。或者任何你使用的 shell 风格。

扩展你的 PATH:

export PATH=/usr/local/share/npm/bin:$PATH

不是一个坏主意。话虽如此,你不应该这样做。

运行这个:

npm config get prefix

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

所以:

  1. 如果是别的什么,就是 npm config set prefix /usr/local
  2. 不要使用 sudo与 npm! 根据 Jslint 医生,你应该只是能够 npm install它。

如果您将 npm 安装为 sudo (sudo brew install) ,请尝试使用普通的 ol’brew install重新安装它。自酿啤酒应该可以帮助你保持 sudo免费。

在这个问题上花了一段时间,PATH 开关没有帮助。我的问题是在这里发现的 Homebrew/node/npm bug-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

我使用 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

然后我只是添加了位于/Users/[ user ]的. bash _ profile 的路径

PATH=$PATH:~/.node/bin

试试跑步:

PATH=$PATH:~/npm/bin

然后在命令行中运行 express进行测试。

如果使用 sudo 命令链接了节点包

然后转到全局安装 node _ module 的文件夹。

在 Unix 系统上,在全局安装时,它们通常放在/usr/local/lib/node 或/usr/local/lib/node _ module 中。如果将 NODE _ PATH 环境变量设置为此路径,则可以通过 NODE 找到这些模块。

应用程序数据 npm 节点 _ 模块 Windows7 -% AppData% npm node _ module

然后运行命令

ls -l

这将给出所有全局 node _ module 的列表,您可以很容易地看到链接的节点模块。

Sudo brew 已经不再是一个选项了,所以如果你在这个时候安装了 brew,你会得到两个非常讨厌的东西: 答: 它喜欢安装到 /usr/local/opts或根据这个,/usr/local/share。这在一开始并不是什么大问题,但是我在安装 lint 时遇到过节点 PATH 的问题。 B: 在你卸载和安装它之前,你一直在使用 sudo 命令,或者你可以从 比特纳米获得堆栈

我建议使用这个方法而不是堆栈选项,因为如果您有多个项目,那么就可以使用它了。如果你使用预制的 MEAN 堆栈,你将不得不在 httpd.conf 中设置虚拟主机(这个堆栈比 XAMPP 更麻烦) ,除非你想在完成更新工作后重新定位和重启服务器,否则每个额外的项目都要进行额外的/vhosts.conf 和/etc/hosts 更新。

任何人都有同样的问题,这与 Brew 和 npm 之间的冲突有关 请检查此解决方案 < a href = “ https://gist.github.com/Danherbert/9520689”rel = “ nofollow norefrer”> https://gist.github.com/danherbert/9520689

通过执行以下操作,我成功地修复了 Vue Cli 没有命令错误的问题:

  • 在终端 sudo nano ~/.bash_profile中编辑 bash 配置文件。
  • 加入 export PATH=$PATH:/Users/[your username]/.npm-packages/bin
  • 保存文件并重新启动终端
  • 现在你应该能够使用 vue create my-projectvue --version等。

我这样做之后,我安装了最新的 Vue Cli 从 https://cli.vuejs.org/

我通常使用纱线,但是我使用 npm npm install -g @vue/cli在全球范围内安装了它。如果你喜欢 yarn global add @vue/cli,你也可以用纱线

注意: 如果您已经安装了它,那么您可能必须首先在全局范围内卸载它: npm uninstall -g vue-cli

希望这个能帮上忙!

简单的解决办法就是..。

只要把下面的命令:

  1. sudo npm config get prefix

    如果它不像这些 /usr/local,那么您需要使用以下命令修复它。

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

现在100% 正常了

我卸载的节点从自制的 M1苹果硅,而是使用从 https://nodejs.org/en/download/的 Mac 安装程序。这样做之后,我就可以用 npm 和 npx 安装了。

在较新的 MacOS 版本中,您需要编辑 。 zhrc文件,而不是 . bash _ profile:

在你的 nano ~/.zshrc终端 然后加上这句话:

export PATH=$PATH:/Users/[your username]/.npm-packages/bin