鱼壳和全球npm模块

鱼壳和全球npm模块,npm,fish,Npm,Fish,我在本地环境中遇到一些问题 我正在使用: ~> npm config get prefix /Users/me/.npm-packages ~> npm bin /Users/me/node_modules/.bin 自制(1.1.4) 鱼壳(2.4) n版本管理器(2.1.0) 节点 npm 上述所有软件最初都是通过自制软件安装的 问题: ~> npm config get prefix /Users/me/.npm-packages ~> npm bin /

我在本地环境中遇到一些问题

我正在使用:

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

~> npm bin
/Users/me/node_modules/.bin
  • 自制(1.1.4)
  • 鱼壳(2.4)
  • n版本管理器(2.1.0)
  • 节点
  • npm
上述所有软件最初都是通过自制软件安装的

问题:

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

~> npm bin
/Users/me/node_modules/.bin
  • 无法运行任何全局安装的模块
  • 我无法更新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
当我尝试更新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

我们将非常感谢您提供的任何帮助!我一直在试图解决这个问题,现在没有任何运气

我通过完全卸载(并删除任何痕迹)
node
npm
n
,卸载
fish
shell并改为
zsh
解决了这个问题

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


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

全局安装节点应用程序时会发生什么

在OSX 10.12.5中配置 鱼类v2.6.0 节点v8.1.0 终端中的示例命令同时返回

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中拥有的路径,使您能够执行指向实际安装位置的jshint(installed package)->

包括下面的行,用于在文件~/.profile中配置路径

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
这是帮助我解决问题的唯一方法。

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

顺便说一句,下面的一个工作,但只在终端会话:

set PATH $PATH /Users/{USERNAME}/.npm-packages/bin
注意:您可以通过以下方式找到npm包路径:

printf "%s\n" $PATH

这看起来像是
/Users/me/.npm packages/bin/
不在
路径中的简单情况。
echo$PATH
是否包含
/Users/me/.npm-packages/bin/
?谢谢回复。我刚刚检查过,它似乎在那里:
echo$PATH
是否显示冒号?(不应该,看起来应该用空格分隔)如果没有冒号,那么
gulp
必须在其他地方。当从gulp工作的环境中运行时,
哪个gulp
显示了什么?再次感谢您的回复
echo$PATH~>/Users/me/.npm-packages/usr/local/bin/usr/bin/bin/usr/sbin/sbin
我尝试了
哪种模式(和其他模块)但它什么也不返回。我在fish shell和bash中都进行了尝试。我有一个非常相似的设置,我发现自己必须为每个新的shell运行
nvm use default
,另请参见