Fish shell 和全局 npm 模块

kur*_*343 7 fish npm

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

我在用着:

  • 自制软件 (1.1.4)
  • 鱼壳 (2.4)
  • n 版本管理器(2.1.0)
  • 节点
  • 新项目管理

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

问题:

  • 任何全局安装的模块都无法运行。
  • 我无法更新 npm 版本。

我经常使用的节点版本是 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
Run Code Online (Sandbox Code Playgroud)

当我尝试更新 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
Run Code Online (Sandbox Code Playgroud)

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

~> gulp
fish: Unknown command 'gulp'
Run Code Online (Sandbox Code Playgroud)

为了修复全局模块我尝试过:

~> 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
Run Code Online (Sandbox Code Playgroud)

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

ces*_*rds 6

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

$ npm config get prefix
// Output: /usr/local/Cellar/node/9.2.1
Run Code Online (Sandbox Code Playgroud)

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

set PATH /usr/local/Cellar/node/9.2.1/bin $PATH
Run Code Online (Sandbox Code Playgroud)

这是帮助我解决问题的Github相关链接。


kur*_*343 -8

我通过完全卸载(并删除任何痕迹)和node,卸载shell 并更改为来解决此问题。npmnfishzsh

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

全局 npm 模块现在可以工作了。