安装后找不到Gulp命令

ilu*_*ton 91 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)
Run Code Online (Sandbox Code Playgroud)

但是当我打字gulp时说-bash: gulp: command not found

知道发生了什么事吗?

ilu*_*ton 162

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

npm config set prefix /usr/local
Run Code Online (Sandbox Code Playgroud)

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

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

  • 谢谢!解决了我的问题:) (2认同)
  • 惊人.谢谢. (2认同)
  • 解决方案也帮助了我 (2认同)
  • 谢谢,这很有效.太奇怪了.我在macbook 1上安装它,它工作,macbook 2,不起作用,所以我必须这样做.疯. (2认同)
  • 我想知道为什么StackOverflow不会将此作为第一个答案!显然是正确的. (2认同)

the*_*hme 55

不确定为什么这个问题被投票,但我有同样的问题,并按照建议解决问题的博客文章.我应该补充的一点是,就我而言,一旦我跑了:

npm config set prefix /usr/local
Run Code Online (Sandbox Code Playgroud)

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

sudo npm install gulp -g


Ste*_*erg 21

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

npm install -g gulp
Run Code Online (Sandbox Code Playgroud)

紧接着是:

rehash
Run Code Online (Sandbox Code Playgroud)

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

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


小智 16

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

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


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

第1步:找出npm的默认目录.

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

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

  • 场景一: npm的默认目录是/usr/local
    对于大多数用户,您的输出将显示npm的默认目录是/ usr/local,在这种情况下,您可以跳到步骤4以更新目录的权限.
  • 方案二:故宫的默认目录/usr/Users/YOURUSERNAME/node_modules/Something/Else/FishyLooking
    如果您发现故宫的默认目录不是在/ usr /本地,但反而是你无法解释或看起来腥,你应该去第3步更改默认目录NPM,或者你有可能在更大规模上搞乱你的权限.

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

  • 有几种方法可以解决这个问题,包括专门为全局安装创建一个目录,然后将该目录添加到$ PATH,但由于/ usr/local可能已经在你的路径中,我认为更改npm更简单默认目录.像这样: 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.注意:您可能需要重新启动终端才能使这些更改生效.


Atu*_*mar 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. 再次不使用sudo再次安装gulp,npm install gulp -g

这应该工作!!