安装全局和本地后,找不到本地的gulp

4
我已经全局安装了gulp
sudo npm install --global gulp-cli

并且在本地

npm install --save-dev gulp

/usr/local/bin/gulp 存在,以及 ./node_modules/gulp./node_modules/gulp-cli 存在。

当我尝试在命令行中运行 gulp 时,会出现常见错误。

$ gulp
[00:55:43] Local gulp not found in ~/dev/myProj/play-java-seed
[00:55:43] Try running: npm install gulp

我注意到的一件事是,如果我在一些随机目录(~/foo)中运行gulp,错误消息是该目录中找不到本地gulp。如果我从正确的目录(~/dev/myProj/play-java-seed/ui)运行它,则错误引用父目录。

实际上,在错误消息所在的目录中并没有安装gulp;它安装在较低的目录中。

/usr/local/bin/gulp是指向一个具有以下内容的文件的符号链接:

#!/usr/bin/env node

'use strict';

require('../')();

那个文件中的..是否正确?看起来很奇怪,但我之前没有仔细看过。

如果操作系统有关系的话,我正在运行32位Ubuntu 16.04。

我的package.json中的devDependencies包括gulpgulp-cli


7
这个文件夹里是否有 gulpfile.js 文件? - Rico Kahler
该文件夹中有一个名为 gulpfile.js 的文件,其中包含 node_modules。 - Troy Daniels
我还查看了我的Mac上的gulp安装,gulp在那里按预期工作。在那里,/usr/local/bin/gulp是一个符号链接,指向一个大约有200行代码并且看起来像我所期望的文件。这与不工作的Linux版本形成对比,它乍一看似乎根本不应该工作,尽管我可以想象require可能会进行某些魔法操作。 - Troy Daniels
1个回答

5

在评论中,Rico Kahler给出了正确的答案。

当我看到机器时(而不是凭记忆),我发现gulp文件比应该高一级目录。

错误消息确实有一个提示:它给出了包含gulpfile的目录,而不是当前目录。


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