安装后找不到Gulp命令

时间:2014-08-02 00:25:20

标签: macos bash terminal npm 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)

但是当我输入gulp时,它会显示-bash: gulp: command not found

知道发生了什么事吗?

12 个答案:

答案 0 :(得分:159)

事实证明npm安装在错误的目录中,因此我必须通过运行此代码来更改“npm config prefix”:

npm config set prefix /usr/local

然后我全局重新安装gulp(使用-g param)并且它正常工作。

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

答案 1 :(得分:52)

不确定为什么这个问题被低估了,但我遇到了同样的问题,并且按照推荐的博客文章解决了这个问题。我应该补充的一点是,就我而言,一旦我跑了:

npm config set prefix /usr/local

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

sudo npm install gulp -g

答案 2 :(得分:21)

如果您正在使用tcsh(这是我在Mac OS X上的默认shell),您可能只需在安装完成后立即在shell中键入rehash

npm install -g gulp

紧接着是:

rehash

否则,如果这是您第一次安装gulp,那么您的shell可能无法识别安装了新的可执行文件 - 因此您需要启动一个新shell,或者键入rehash in当前的shell。

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

答案 3 :(得分:15)

我意识到这是一个老线程,但对于Future-Me和后代,我想我应该在运行npm作为sudo"周围加上我的2美分。讨论。 免责声明:我不使用Windows。这些步骤仅在非Windows机器上进行了验证,包括虚拟和物理。

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

如何:更改权限以便在没有sudo

的情况下运行npm

步骤1:找出npm的默认目录。

  • 要执行此操作,请打开终端并运行:
    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的默认目录:

  • 有几种方法可以解决这个问题,包括专门为全局安装创建一个目录,然后将该目录添加到$ PATH,但由于/ usr / local可能已经在你的路径中,我认为它是&#39 ;更简单地将npm的默认目录更改为该目录。像这样:npm config set prefix /usr/local
    • 有关我提到的其他方法的更多信息,请参阅npm docs here

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

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

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

答案 4 :(得分:5)

我有类似的问题我做了以下步骤并且它工作。转到mac终端并执行命令,

1.npm config set prefix / usr / local

2.sudo chown -R $(whoami)$(npm config get prefix)/ {lib / node_modules,bin,share}

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

  1. npm uninstall gulp

  2. 在没有sudo的情况下再次安装gulp, npm install gulp -g

  3. 这应该有用!!

答案 5 :(得分:4)

我在安装后遇到“未找到命令”时出现此问题,但我已安装到/ usr / local中,如上面的解决方案中所述。

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

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

答案 6 :(得分:3)

您需要执行此操作npm install --global gulp。它适用于我,我也有这个问题。这是因为您没有全局安装此软件包。

答案 7 :(得分:1)

如果您使用的是Mac,请运行使用超级用户权限

sudo npm install gulp-cli --global

要检查是否已安装,请运行

gulp -v

CLI版本:2.2.0(输出)

  

本地版本:未知

答案 8 :(得分:0)

在我的情况下,在npm安装之前添加 sudo 解决了 gulp命令未找到问题

sudo npm install

答案 9 :(得分:0)

如果您想保留前缀不变,只需将其bin目录导出到PATH变量即可:
export PATH=$HOME/your-path/bin:$PATH
我将此行添加到$ HOME / .profile并获取了它。

将前缀设置为/usr/local使您可以使用sudo,因此我希望将其放在用户目录中。您可以使用npm prefix -g检查前缀。

答案 10 :(得分:0)

我在Win10上使用来自上面和其他地方的答案进行了这项工作。在这里发布给他人并让我未来。

我按照这里的说明进行操作:https://gulpjs.com/docs/en/getting-started/quick-start,但是在键入gulp --version后的最后一步,我收到消息-bash:gulp:命令未找到

要解决此问题:

  1. 我在Path环境变量中添加了%AppData%\ npm
  2. 关闭所有gitbash(cmd,powershell等),然后重新启动gitbash。
  3. 然后gulp --version工作了

此外,出于以下原因,发现以下内容是为什么不全局安装gulp以及如何将其删除(不过不确定是否建议这样做):

what does gulp-"cli" stands for?

How to uninstall Gulp CLI from NPM globally?

答案 11 :(得分:0)

在公司代理后面,全局命令通常不起作用,因此您可以在本地安装 gulp 的地方运行命令。