fish shell 和全局 npm 模块

fish shell and global npm modules

我的本地环境遇到了一些问题。

我正在使用:

以上所有内容最初都是通过自制软件安装的。

问题:

我经常使用的节点版本是 0.10.48 和 6.9.2 - 但主要是 4.6.2。

我在 fish 中创建了一些别名,以便能够将全局模块获取到 运行。不过,我更愿意解决根本原因,而不是继续应用更多创可贴。

额外信息:

~> npm config get prefix
/Users/me/.npm-packages

~> npm bin
/Users/me/node_modules/.bin

当我尝试更新 npm 时会发生什么:

~> npm install -g npm@3
/Users/me/.npm-packages/bin/npm -> /Users/me/.npm-packages/lib/node_modules/npm/bin/npm-cli.js
npm@3.10.10 /Users/me/.npm-packages/lib/node_modules/npm
~> npm -v
2.15.9

当我尝试调用全局模块时:

~> gulp
fish: Unknown command 'gulp'

我为修复全局模块所做的尝试:

~> cat ~/.config/fish/config.fish
set fish_user_paths /Users/me/.npm-packages

ls ~/.config/fish/functions
bower.fish ember.fish pm2.fish

~> cat ~/.config/fish/functions/bower.fish 
function bower
    /Users/me/.npm-packages/bin/bower  $argv;
end

如果您能提供任何帮助,我们将不胜感激!我已经尝试解决这个问题一段时间了,但没有任何运气!

我通过完全卸载(并删除任何痕迹)nodenpmn、卸载 fish shell 并更改为zsh 相反。

之后,我安装了 nvm 并用它在我的机器上恢复 node

全局 npm 模块现在可用。

全局安装节点应用程序时会发生什么https://docs.npmjs.com/getting-started/fixing-npm-permissions

在 OSX 10.12.5 中配置 鱼 v2.6.0 节点 v8.1.0 终端中的示例命令 returns both

term~> npm install jshint -g
/Users/username/npm-global/lib/node_modules/bin/jshint -> 
/Users/username/npm-global/lib/node_modules/jshint/bin/jshint

你应该在 shell 中的 PATH 使你能够执行 jshint (installed package) -> 指向实际安装位​​置

在文件 ~/.profile 中包含用于配置 PATH 的行

export PATH="$HOME/npm-global/lib/node-modules/:$PATH"

您可以使用已安装的 npm 模块。您只需要将 npm 全局路径添加到 shell。为此,我 运行:

$ npm config get prefix
// Output: /usr/local/Cellar/node/9.2.1

然后,添加到我的 fish/config.fish:

set PATH /usr/local/Cellar/node/9.2.1/bin $PATH

这就是帮我解决问题的Github related link

我的永久解决方案(使用 macOS Mojave 和 fish 2.7.1):

set -U fish_user_paths /Users/{USERNAME}/.npm-packages/bin $fish_user_paths

顺便说一句,下面的一个有效但只在终端会话中:

set PATH $PATH /Users/{USERNAME}/.npm-packages/bin

注意:您可以通过以下方式找到 npm-packages 路径:

printf "%s\n" $PATH

对我来说这些都没用,所以我安装了 oh my fish nvm plugin

omf install nvm