安装后找不到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运行安装引起的。 我做了以下。
- 再次用sudo删除gulp
- 将/ usr / local / lib / node_modules的所有者更改为我的用户
- 再次安装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
-
npm卸载gulp
-
安装gulp没有sudo,npm安装gulp -g
这应该工作!
你需要做这个npm install --global gulp
。 它适用于我,我也有这个问题。 这是因为你没有在全球安装这个软件包。
我在我的MacBook Pro有这个问题。 安装包https://github.com/int3h/SublimeFixMacPath修复了我。;
在我的情况下添加sudo npm安装之前解决了gulp命令没有发现问题
sudo npm install