本地没有找到Gulp(尝试运行:npm install gulp)

93

我创建了一个模块 (webapp-module-storage),其中包含以下定义:

package.json

{
  "dependencies": {
    ...
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    ...
  },
  "name": "webapp-module-storage",
  "scripts": {
    "postinstall": "gulp build",
    "test": "gulp test"
  }
}

我以为只需要使用以下命令安装模块,就可以在另一个模块中使用:

  • npm install github:myorg/webapp-module-storage#master

但是,当我安装我的模块时,我遇到了以下错误:

Local gulp not found

Try running: npm install gulp

截图

enter image description here

我的理解是,因为我在devDependencies中声明了它,所以gulp应该和我的模块一起提供。但看起来我的npm postinstall脚本无法找到gulp

我错过了什么吗?


1
在项目文件夹中执行 npm i gulp -D。注意:gulp4 可能会在旧项目中出现问题,如果要安装特定版本,请使用以下命令:npm i gulp@3.9.1 -D(ps -D 用于 devDependencies)。 - Guilherme Nascimento
7个回答

198

尝试在您的应用程序目录中运行 npm link gulp(创建本地链接到全局安装的Gulp模块)。


1
我是 Laravel / Homestead 用户。上述命令对我无效,但是 npm link gulp --no-bin-links 命令有效。 - Lpgfmk
7
为了澄清,npm link [module] 会从 [module] 的全局安装文件夹创建一个符号链接到当前路径的 ./node_modules/[module](如果不带名称,则 npm link 链接包,可参考手册页面)。 - techturbulence

24

尝试先安装依赖项:

npm install
如果仍然不起作用,则全局安装gulp:
npm install -g gulp

如果您在安装时遇到问题,请在npm前输入sudo

如果您需要更多关于为什么需要全局和本地安装gulp的信息,请阅读答案。


1
Gulp已全局安装:[17:51:24] CLI版本1.2.1 - Benny Code
实际上并不是在应用程序中使用我的模块。但我认为它会从我的模块路径或全局安装的 gulp 中获取。 - Benny Code
1
似乎正在搜索项目内的本地gulp。为什么不在项目内安装它呢? - Sebastian S

17

我尝试过所有提到的解决方案。最后我意识到,在使用gulp的位置上缺少了 gulpfile.js 文件,把它放到我执行gulp的文件夹中,问题就解决了。


1
我犯了同样的错误。我所在的目录比应该在的目录高了一级。如果你正在快速设置像Express Generator环境这样的东西,其中有多个子应用程序位于根位置下,这种情况很容易发生。我只需要放慢速度就好了。 - klewis

3

npm link gulp --no-bin-links

这个命令会创建一个本地链接到全局安装的gulp模块,--no-bin-links参数会防止npm为包含二进制文件的软件包创建符号链接。

如果要将符号链接同步到Windows共享文件夹上,则需要使用'--no-bin-links'。

对于不支持符号链接的任何文件系统都可以使用此方法。

符号链接是“虚拟”的文件或文件夹,它们引用位于其他位置的物理文件或文件夹,并且是许多操作系统(包括Linux和Windows)中内置的重要功能。


1
你好!虽然此代码可能解决了问题,但包括解释这如何解决问题及其原因会更有助于提高您的帖子质量,并可能导致更多赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Brian61354270
感谢 @Brain 的指出 :). 我已经进行了编辑。 - Parikshit Singh

1

npm link gulp --force

使用这个命令对我很有效。


0
将Gulp放入项目的常规依赖项中:
npm i gulp

然后让你的脚本部分引用本地的Gulp,就像这样:

  "scripts": {
    "postinstall": "./node_modules/.bin/gulp build",
    "test": "./node_modules/.bin/gulp test"
  }

0

我使用Visual Studio Code和带有Power Shell的终端,也遇到了这个问题。当我更改执行策略时,这个问题就消失了。我从gulp获取了关于此解决方案的信息。执行策略更改示例如下图所示:Set Execution Policy


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