安装后找不到Gulp命令

我安装了gulp(全局),它看起来像工作,因为它运行这个代码:

├── tildify@0.2.0 ├── interpret@0.3.5 ├── pretty-hrtime@0.2.1 ├── deprecated@0.0.1 ├── archy@0.0.2 ├── minimist@0.2.0 ├── semver@2.3.2 ├── orchestrator@0.3.7 (stream-consume@0.1.0, sequencify@0.0.7, end-of-stream@0.1.5) ├── chalk@0.5.1 (escape-string-regexp@1.0.1, ansi-styles@1.1.0, supports-color@0.2.0, strip-ansi@0.3.0, has-ansi@0.1.0) ├── gulp-util@2.2.20 (lodash._reinterpolate@2.4.1, dateformat@1.0.8-1.2.3, vinyl@0.2.3, through2@0.5.1, multipipe@0.1.1, lodash.template@2.4.1) ├── liftoff@0.12.0 (extend@1.2.1, minimist@0.1.0, resolve@0.7.4, findup-sync@0.1.3) └── vinyl-fs@0.3.5 (graceful-fs@3.0.2, lodash@2.4.1, mkdirp@0.5.0, strip-bom@0.3.1, vinyl@0.2.3, through2@0.5.1, glob-watcher@0.0.6, glob-stream@3.1.14) 

但是,当我inputgulp它说-bash: gulp: command not found

任何想法发生了什么?

原来,npm安装在错误的目录中,所以我不得不通过运行下面的代码来改变“npm config prefix”:

 npm config set prefix /usr/local 

然后,我重新安装gulp全球(使用-g参数),它工作正常。

这篇文章是我find解决scheme的地方: http : //webbb.be/blog/command-not-found-node-npm

不知道为什么这个问题被低估,但我有同样的问题,并按照博客文章推荐解决这个问题。 我应该补充的一件事是,就我而言,一旦我跑了:

 npm config set prefix /usr/local 

我确认npm root -g指向/usr/local/lib/node_modules/npm ,但是为了在/usr/local/lib/node_modules安装/usr/local/lib/node_modules ,我必须使用sudo

sudo npm install gulp -g

如果您使用的是tcsh (这是我在Mac OS X上的默认shell),那么在安装完成之后,您可能只需要在shell中inputrehash

 npm install -g gulp 

紧接着是:

 rehash 

否则,如果这是您第一次安装gulp ,那么您的shell可能无法识别是否安装了新的可执行文件 – 因此您需要启动一个新的shell或在当前shell中inputrehash

(对于您在全球安装的每个命令,这基本上是一次性的。)

我意识到这是一个古老的线索,但对于未来,我和后代,我想我应该加上我的两分钱围绕“运行npm作为sudo”讨论。 免责声明:我不使用Windows。 这些步骤仅在虚拟和物理的非Windows机器上得到validation。

您可以通过更改npm默认目录的权限来避免使用sudo。


如何更改权限以便在不使用sudo情况下运行npm

第一步:找出npm的默认目录是哪里。

  • 为此,打开您的terminal并运行:
    npm config get prefix

第2步:根据该命令的输出继续:

  • 场景一: npm的默认目录是/usr/local
    对于大多数用户来说,你的输出将显示npm的默认目录是/ usr / local,在这种情况下,你可以跳到步骤4来更新目录的权限。
  • 场景二: npm的默认目录是/usr/Users/YOURUSERNAME/node_modules/Something/Else/FishyLooking
    如果你发现npm的默认目录不是/ usr / local,而是你无法解释或者看起来很诡异的东西,你应该到第3步去改变npm的默认目录,否则你可能会搞砸你的权限规模大得多。

第3步:更改npm的默认目录:

  • 有几种方法可以解决这个问题,包括专门为全局安装创build一个目录,然后把这个目录添加到你的$ PATH中,但是由于/ usr / local可能已经在你的path中,所以我认为只需要改变npm默认目录。 像这样: npm config set prefix /usr/local
    • 有关我提到的其他方法的更多信息,请参阅这里的npm文档。

第4步:更新npm默认目录的权限:

  • 一旦你确认npm的默认目录是在一个合理的位置,你可以使用以下命令更新它的权限:
    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

现在你应该可以在没有sudo情况下运行npm <whatever>注意:您可能需要重新启动terminal才能使这些更改生效。

在安装后,我遇到了“找不到命令”的问题,但是按照上面的解决scheme,我已经安装到了/ usr / local。

我的问题似乎是由我使用sudo运行安装引起的。 我做了以下。

  1. 再次用sudo删除gulp
  2. 将/ usr / local / lib / node_modules的所有者更改为我的用户
  3. 再次安装gulp没有sudo。 “npm install gulp -g”

我有类似的问题,我做了以下步骤,它的工作。去macterminal和执行命令,

1.npm config set prefix / usr / local

2.sudo chown -R $(whoami)$(npm config获取前缀)/ {lib / node_modules,bin,share}

这两个命令将正确设置npmpath,不再需要在npm中使用sudo。 接下来卸载gulp

  1. npm卸载gulp

  2. 安装gulp没有sudo,npm安装gulp -g

这应该工作!

你需要做这个npm install --global gulp 。 它适用于我,我也有这个问题。 这是因为你没有在全球安装这个软件包。

我在我的MacBook Pro有这个问题。 安装包https://github.com/int3h/SublimeFixMacPath修复了我。;

在我的情况下添加sudo npm安装之前解决了gulp命令没有发现问题

sudo npm install