找不到gulp命令 - 安装gulp后出错

问题描述 投票:201回答:38

我已经在全球和本地安装了gulp

npm install gulp
npm install gulp -g
npm install gulp-util
npm install gulp-util -g

当我尝试运行gulp我得到

'gulp' is not recognized as an internal or external command, operable program or batch file.

运行npm list gulp(或-g),我[email protected]与我的全局或本地gulp安装的位置。

我已经尝试运行node gulpfile.js指向我的gulpfile,它运行没有错误,当然,它从require('gulp')开始。

关于让gulp在Windows上运行的任何建议(8.1)?

windows node.js gulp
38个回答
211
投票

你忘了安装gulp-cli包:

npm install -g gulp-cli

然后,您可以从命令行运行命令“gulp”。


11
投票

您应首先将npm install --save-dev gulp 安装为全局使用:

npm link gulp

否则路径解决方案将无法解决问题。

然后使用以下命令将npm模块路径添加到PATH:

gulp

9
投票

尝试将以下内容添加到PATH变量中:

npm install gulp -g

我有同样的问题,我解决了添加到我的节点模块的路径。


8
投票

我在Windows 10中设置了类似的问题。我的答案是特定于Windows的(查看bash中针对linux或OSX解决方案修改路径的答案)

我遇到的核心问题是npm的文件夹没有在路径中注册。我最初尝试在cmd提示符下更改此项。

PATH = %PATH%;%APPDATA%\npm

请注意,我使用setx而不是set来确保保留对环境变量的更新。另请注意,这是一个反斜杠。

这应该可以,但对我来说它不是因为setx只有接受1024个字符的限制......(是的,它对我来说也是荒谬的)。

所以试试上面的内容,如果你收到类似于达到1024限制的警告,那么你可以采取我最终做的另一种方式。

首先,当您仍然在控制台中时,键入:qazxsw poi ...这是您要添加到路径的npm文件夹,因此将其添加到剪贴板。

您必须进入注册表并访问以下文件夹:

C:\Users\YOUR_USER\AppData\Roaming\npm

然后在剪贴板中添加带有npm文件夹路径的“Path”值。重新启动以激活新值,您现在应该很高兴。

setx path "%path%;%appdata$\npm"

最后,只需测试一下

echo %appdata%\npm

6
投票

这最终成为我的“用户”问题。我在系统上安装了npm和node作为user1登录,然后我设置了user2。我可以运行node,我可以运行npm commnds,但是无法从命令行运行任何npm包。

我卸载了node和npm,并在正确的用户下重新安装以解决问题。之后,我可以毫无问题地从命令行运行包。


6
投票

最佳答案对我不起作用。

我正在使用拥有前任所有者的虚拟机。之前的所有者安装了旧版本的npm。使用它,我在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment全球安装了gulp。运行命令using regedit将返回>npm install -g gulp >gulp 。正如我所说,顶部的答案没有解决我的问题。我基本上不得不重新安装nodejs。

  1. 重新下载npm install -g gulp
  2. gulp
  3. 'gulp' is not recognized as an internal or external command, operable program or batch file.

这解决了我的问题。


4
投票

我在Win7 x64上使用了Nodejs的v0.12.3,当我尝试安装gulp时遇到了类似的问题。这对我有用:

  1. 卸载的Nodejs
  2. 已安装的Nodejs v0.10.29
  3. npm install -g npm
  4. npm install -g gulp

4
投票

NodeJS安装程序似乎将用户/ AppData / Roaming / npm路径添加到用户环境路径,这是合适的。

通常,命令行中的PATH环境变量是用户环境路径和系统环境路径的组合。

但是,如果用户环境路径+系统环境路径大于约1920个字符,则Windows不会组合用户和系统路径 - 仅使用系统环境路径。

见:nodejs

因此,当您在Windows中打开“高级系统设置”以编辑环境变量时,请查看用户/ AppData / Roaming / npm路径是否已在您的用户环境PATH中。如果是,那么问题是您的用户+系统路径太长,导致Windows忽略您的用户路径。修剪您的用户和/或系统路径字符串,gulp应该按安装的方式工作。

如果您找不到任何可以剪掉用户和系统路径的内容,请将user / AppData / Roaming / npm路径添加到系统环境路径并将其称为hack。


4
投票

安装后我遇到了同样的问题。所以我尝试使用提升的权限(管理员)运行npm install -g gulp并且它有效。

屏幕截图:

gulp -version


4
投票

在环境变量路径C:\ Users \ USERNAME \ AppData \ Roaming \ npm \中添加此路径


3
投票

这通常是因为在其他人指出的环境变量中找不到它。这对我有用。

echo%PATH%

这将显示您的PATH环境变量是什么。如果node_modules不存在,则执行以下操作以从APPDATA路径添加它。

PATH =%PATH%; %APPDATA%\ NPM


208
投票

问题和答案可以在这个问题中找到:https://stackoverflow.com/a/9588052/1041104

npm模块(如gulp)未安装到路径中。因此,当您在CMD中运行它们时找不到。

如果已全局安装gulp,您可以使用以下过程:

  1. 创建一个名为NODE_PATH的环境变量
  2. 在Windows 8-10上将其设置为:%AppData%\npm\node_modules%AppData%\npm
  3. 关闭CMD,然后重新打开以获取新的ENV变量

运行npm lsnpm ls -g显示它们已安装,但由于the missing link,CMD找不到它们。


3
投票

我已经从这个答案得到了一个条件(我不知道为什么)

https://stackoverflow.com/a/21270921/301152

也就是说,我的PATH已经包括cmd

在我的情况下,问题是npm没有在那里安装模块(再次,我不知道为什么)

因此我需要这样做:

cmd

之后,运行https://stackoverflow.com/a/27295145/1175496(或安装任何其他模块)将模块放在PATH期望的位置。


3
投票

这对我有用:

%APPDATA%\npm

3
投票

在我的Windows 10企业版上,gulp没有安装在%AppData%中,我的机器上是C:\ Users \ username \ AppData \ npm \ node_modules,但是在C:\ Users \ username \ AppData \ Local \ npm \ node_modules中。

为了在命令提示符或powershell中获取gulp,我向用户PATH添加了值C:\ Users \ username \ AppData \ Local \ npm。之后,它就像一个魅力。当然,我必须关闭命令提示符或powershell窗口并重新打开以使上述操作生效。


3
投票

在我的情况下,我必须通过命令$ npm config set prefix -g %APPDATA%/npm安装gulp-cli


2
投票

如果在Windows 10中找不到gulp命令问题并且添加“%AppData%\ npm \ node_modules”对我不起作用。请执行以下步骤:

做完之后

$ npm install -g gulp

npm link gulp npm update

npm -g install gulp-cli

到系统变量中的路径。

在所有解决方案都失败后,它对我有用。


2
投票

我通过将npm install -g npm添加到npm install -g gulp而不是C:\Users\YourUsername\npm来解决它


2
投票

运行C:\Users\[USER]\AppData\Roaming\npm

如果您正在使用Windows,请将gulp的目录添加到PATH。

PATH


2
投票

在Windows中:

  1. 使用您的Windows资源管理器,导航到您的流浪汉共享文件夹(我顺便使用scotchbox),例如C:\Users\[USER]\AppData\Roaming\npm\node_modules
  2. 在文件夹的地址栏中,键入npm install gulp -g并按Enter键
  3. 你的gulp安装C:\Users\YOURNAME\AppData\Roaming\npm\node_modules\gulp

2
投票

简而言之:

如果其他答案不起作用,您应该将C:\scotchbox/public/gulpProject添加到系统变量cmd

原因:

关键是,命令提示符只执行npm install系统变量下的程序,而不是用户变量。如果您将%NODE_PATH%设置为用户变量,请将Path添加到Path


我在这里问了并且有一个不同意图的问题的标记重复:(

NODE_PATH


2
投票

(Windows 10)我不喜欢路径答案。我为node.js使用choco包管理器。 Gulp不会为我开枪,除非它是:

  1. 全球安装的%NODE_PATH%和当地的dir Path
  2. 问题一直持续到这一次,通过完全删除node.js并重新安装它来解决。

我没有看到任何关于local / global和node.js删除/重新安装的评论。


79
投票
  1. 确保你有gulp和gulp.cmd(使用Windows搜索)
  2. 复制gulp.cmdC:\Users\XXXX\AppData\Roaming\npm)的路径
  3. 将此路径添加到Path环境变量或编辑qazxsw poi环境变量并添加qazxsw poi
  4. 重新打开cmd。

PATH添加到Path的前面,而不是Path的末尾。


1
投票

如果您在Windows上并且gulp未被识别为内部或外部命令,则可运行的程序或批处理文件尝试运行gulp.js。

我正在做一个laravel项目,并在本地运行gulp。还可以使用Windows命令提示符之外的其他内容,因为gulp.js可能会出错。我正在使用Git bash,它运行得很好。


43
投票
  1. 全局安装gulp。 %APPDATA%\npm
  2. 在项目中本地安装gulp。 %APPDATA%\npm
  3. 在package.json中添加以下行 npm install -g gulp
  4. 跑了一口气。 npm install gulp

这对我有用。


33
投票

我使用的是Windows 8.1。我有同样的问题。

我使用Node.js命令提示符安装了gulp

"scripts": {
      "gulp": "gulp"
 }

然后转到Node.js命令提示符下的所需目录并尝试

npm run gulp

如果找不到gulp本地版本退出当前的Node.js命令提示符并在新的Node.js命令提示符下尝试上面的命令

我尝试了@SteveLacy提到的NODE_PATH,但是命令提示符仍然无法检测到gulp命令


24
投票

有同样的问题,不是真正的最佳解决方案,但全局安装:

npm install -g gulp

当然最好还是在gulp -v 中,所以你可以在本地安装它并在npm install -g gulp 中添加一个条目:

package.json

其他一切(gulp插件)也在本地安装。


16
投票

简单的解决方案就是做package.json


15
投票

当我试图让gulp在同事VM上工作时,我遇到了同样的问题。似乎问题源于users文件夹。

在我的环境变量中添加NODE_PATH并没有解决问题。

如果您在系统变量中编辑'Path'变量并在其末尾添加'%APPDATA%\ npm',它应该解决问题...除非你或其他人npm安装gulp作为另一个用户而不是你'我目前登录为。

如果您希望所有用户都可以使用它,请显式地放置'C:\ Users \ yourUser \ AppData \ Roaming \ npm'(或者您曾经有过gulp),而不是使用'%APPDATA%\ npm'。您还可以将文件移动到更加用户无关的路径。

不要忘记启动新的cmd提示符,因为您打开的提示符不会自动获取新的“Path”变量。

现在'gulp'。


14
投票

一个正确的方法:

  1. Cmd + R:输入“%appdata%”
  2. 转到npm文件夹
  3. 复制整个路径,如“C:\ Users \ Blah ... \ npm \”
  4. 转到我的电脑+右键单击“属性”
  5. 高级系统设置(左侧)
  6. 单击Environment Variables
  7. 单击“编辑路径”
  8. 将“C:\ Users \ Blah ... \ npm \”添加到结尾并键入“;”之后
  9. 单击“确定”并重新打开cmd
© www.soinside.com 2019 - 2024. All rights reserved.