安装后找不到Gulp命令


97

我安装了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

知道发生了什么吗?


4
为了解决这个问题,我做到了sudo install gulp -g。起作用了
Mr_Green

10
Mr_Green的意思是:sudo npm install
gulp

Answers:


174

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

npm config set prefix /usr/local

然后,我重新全局安装了gulp(使用-g参数),并且正常工作。

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


2
谢谢!也解决了我的问题:)
叛乱

2
惊人。谢谢。
安德鲁(Andrew)

2
该解决方案也帮助了我
Sergey Andreev

2
谢谢,这工作。太奇怪了。我在Macbook 1上安装了它,它在Macbook 2上不能工作,所以我必须这样做。疯。
axelvnk

2
我不知道为什么StackOverflow不会将其显示为第一个答案!显然,它是正确的。
Anand Sainath

58

不知道为什么这个问题被否决了,但是我遇到了同样的问题,并按照博客文章的建议解决了这个问题。我应该添加的一件事是,就我而言,一旦运行:

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


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

21

如果您正在使用tcsh(这是Mac OS X上的默认外壳),则可能只需要rehash在安装完成后键入外壳:

npm install -g gulp

紧随其后的是:

rehash

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

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


17

我意识到这是一个老话题,但是对于Future-Me和后代来说,我认为我应该在“运行npm作为sudo”讨论的周围加上两美分。免责声明:我不使用Windows。仅在非Windows虚拟机和物理机上证明了这些步骤。

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


如何:更改权限以在不运行npm的情况下运行 sudo

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

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

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

  • 方案一: npm的默认目录/usr/local
    为大多数用户,您的输出将显示npm的默认目录为/ usr / local,在这种情况下,您可以跳到步骤4以更新该目录的权限。
  • 方案二: npm的默认目录是/usror或/Users/YOURUSERNAME/node_modulesor /Something/Else/FishyLooking
    如果发现npm的默认目录不是/ usr / local,而是无法解释或看起来不透明的东西,则应转到步骤3更改npm的默认目录,否则您可能会冒更大的风险来破坏权限

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

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

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

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

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


7

我遇到了类似的问题,我执行了以下步骤,并且成功了。转到mac终端并执行命令,

1. npm config设置前缀/ usr / local

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

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

  1. npm卸载gulp

  2. 再次安装gulp而不使用sudo,npm install gulp -g

这应该工作!!


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暂时可以解决,但它并不总是最好的答案。
降落



1

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

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

要解决此问题:

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

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

gulp-“ cli”代表什么?

如何从NPM全局卸载Gulp CLI?



0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.