安装后Gulp命令未找到

100

我安装了 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:命令未找到

有任何想法是怎么回事吗?


13
Mr_Green的意思是:sudo npm install gulp -g。 - jasonleonhard
12个回答

181

结果发现npm安装在错误的目录中,所以我必须通过运行以下代码更改“npm config prefix”:

npm config set prefix /usr/local

然后我使用-g参数全局重新安装了gulp,这样它就正常工作了。

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


3
谢谢!它也解决了我的问题 :) - rebellion
3
太棒了。谢谢你。 - Andrew
3
这个解决方案帮助了我。 - Sergey Andreev
3
谢谢,这方法行得通。太奇怪了。我在Macbook 1上安装它可以用,但在Macbook 2上不行,所以我得这么做。真疯狂。 - axelvnk
3
我想知道为什么StackOverflow没有将这个答案放在第一位展示!显然它是正确的。 - Anand Sainath
显示剩余3条评论

64

不确定为什么这个问题被投票否决了,但我也遇到了同样的问题,跟随推荐的博客文章解决了这个问题。我应该补充一点的是,在我的情况下,一旦我运行了:

npm config set prefix /usr/local

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

sudo npm install gulp -g


我一直在寻找这个解决方案!谢谢你! 命令:npm config set prefix /usr/local 解决了问题! - north.inhale

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

如果你使用的是tcsh(它是我的Mac OS X上默认的shell),你可能只需要在安装完成后,在shell中输入rehash

npm install -g gulp

紧随其后的是:

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

(这基本上是每个全局安装的命令需要一次性完成的。)


17

我知道这是一个老帖子,但是为了未来的自己和后人,我想在“以sudo方式运行npm”讨论中添加我的观点。 免责声明:我不使用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可能已经在您的路径中,因此我认为更简单的方法是将npm的默认目录更改为/usr/local。像这样:npm config set prefix /usr/local
    • 如需了解其他方法,请查看npm文档

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

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

现在您应该能够运行npm <whatever>而无需使用sudo了。注意:为使更改生效,可能需要重新启动终端。


8

我曾经遇到过类似的问题,我按照以下步骤操作后解决了问题。打开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. 再次安装gulp而不使用sudo,npm install gulp -g

这样应该就可以解决问题了!


4

如果您使用的是Mac,请使用root权限运行

sudo npm install gulp-cli --global

要检查是否安装,请运行

gulp -v

命令行版本:2.2.0(输出)

本地版本:未知


4
我安装完后出现了“命令未找到”的问题,但我是按照上面的解决方案安装在 /usr/local 中的。
我的问题似乎是由于我使用 sudo 运行安装程序引起的。 我做了以下几步:
1. 用 sudo 再次删除 gulp 2. 将 /usr/local/lib/node_modules 的所有者更改为我的用户 3. 不使用 sudo 再次安装 gulp。 "npm install gulp -g"

1
似乎更明智的做法是我不需要使用sudo在本地安装任何东西,为什么我需要使用sudo呢?对于我来说,当我开始使用sudo时,如果你不以sudo身份运行命令行,那么事情就会出问题,就像在日常开发中的用户下一样。我倾向于认为你的方式更正确 - sudo并不总是最好的答案,尽管它似乎可以暂时解决问题。 - landed

3
您需要执行这个命令:npm install --global gulp。它对我有用,而且我也遇到过这个问题。这是因为您没有全局安装此软件包。

1
我使用以上和其他回答的组合在Win10上使其工作。为了帮助其他人和未来的我,我在此发布。
我按照这里的说明:https://gulpjs.com/docs/en/getting-started/quick-start,但在输入 gulp --version 后,在最后一步中,我收到了消息 -bash: gulp: command not found。
为了解决这个问题:
  1. 我将%AppData%\npm添加到我的Path环境变量中
  2. 关闭所有gitbash(cmd,powershell等)并重新启动gitbash。
  3. 然后gulp --version就可以工作了
另外,以下是不安装gulp全局和如何删除它的原因(不确定是否建议这样做):

what does gulp-"cli" stands for?

How to uninstall Gulp CLI from NPM globally?


0
如果您想保留前缀,请将其bin目录导出到您的PATH变量中:
export PATH=$HOME/your-path/bin:$PATH
我将此行添加到了我的$HOME/.profile文件中并进行了源代码处理。
将前缀设置为/usr/local会使您使用sudo,因此我喜欢将其放在我的用户目录中。您可以使用npm prefix -g检查您的前缀。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接