鱼壳和全球npm模块

时间:2016-12-14 09:04:20

标签: npm fish

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

我正在使用:

  • homebrew(1.1.4)
  • 鱼壳(2.4)
  • n版本管理器(2.1.0)
  • 节点
  • NPM

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

的问题:

  • 无法运行任何全局安装的模块。
  • 我无法更新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

您将提供的任何帮助将不胜感激!我一直试图解决这个问题一段时间没有任何运气!

4 个答案:

答案 0 :(得分:2)

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

$ 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帮助我解决了问题。

答案 1 :(得分:0)

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

使用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中使用的PATH,以便您执行 jshint 已安装的软件包) - >指向实际的安装位置

在文件〜/ .profile

中包含用于配置PATH的行
export PATH="$HOME/npm-global/lib/node-modules/:$PATH"

答案 2 :(得分:0)

我的永久解决方案(使用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

答案 3 :(得分:-3)

我通过完全卸载(并删除任何痕迹)nodenpmn,卸载fish shell并更改为zsh来解决此问题

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

全球npm模块现在正常运作。