当我跑“gulp”时,我得到以下内容。看起来我有一个混合的CLI和本地版本,不确定如何解决这个问题。
cabox@box-codeanywhere:~/workspace/apps/web-ui$ gulp -v
[22:44:23] CLI version 2.0.1
[22:44:23] Local version 4.0.0
cabox@box-codeanywhere:~/workspace/apps/web-ui$
cabox@box-codeanywhere:~/workspace/apps/web-ui$
cabox@box-codeanywhere:~/workspace/apps/web-ui$ gulp
[22:44:28] Using gulpfile ~/workspace/apps/web-ui/gulpfile.js
[22:44:28] Starting 'default'...
[22:44:28] 'default' errored after 5.41 ms
[22:44:28] TypeError: gulp.hasTask is not a function
at /home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:23:22
at Array.forEach (<anonymous>)
at verifyTaskSets (/home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:17:11)
at runSequence (/home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:130:2)
at /home/cabox/workspace/apps/web-ui/gulpfile.js:187:5
at taskWrapper (/home/cabox/workspace/apps/web-ui/node_modules/undertaker/lib/set-task.js:13:15)
at bound (domain.js:301:14)
at runBound (domain.js:314:12)
at asyncRunner (/home/cabox/workspace/apps/web-ui/node_modules/async-done/index.js:55:18)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
cabox@box-codeanywhere:~/workspace/apps/web-ui$ ^C
答案 0 :(得分:23)
gulp v4发生了重大变化,并且在运行顺序包中产生了一些问题。
因为我没有你的gulpfile.js,所以我只能尝试使用gulp.series和gulp.parallel与你的gulp任务而不是run-sequence
你可能会收到类似'task1'的错误,'task2'无法完成',在任务的功能中,接受完成的回调并在函数结束时调用你的任务中的回调< / p>
示例:
gulp.task('task1', gulp.series('task1-1', function (done) {
// task 1 code here
done();
}));
gulp.task('task2', gulp.series('task2-1', function (done) {
// task 2 code here
done();
}));
// Similarly Tasks 3 and 4 Code here
gulp.task('main', gulp.series('task1', 'task2', 'task3', 'task4', function (done) {
done();
}));
答案 1 :(得分:15)
重要的是本地版本。由于gulp 4.0.0引入了重大更改,您可以简单地执行我所做的操作 - 明确将本地程序包设置回工作版本:
npm install --save-dev gulp@3.9.1
最近有几次我咬了我一次,我会再次回到这里,我确定。
注意:gulp 3.9.1的依赖项存在许多安全漏洞。你不应该这样做。
答案 2 :(得分:1)
Saurabh Pati's answer是 the 答案。顺便说一句,一种快速的解决方法是将run-sqeuence软件包替换为gulp4-run-sequence软件包。
如果您的项目在本地安装了Gulp,请删除本地版本的Gulp:
ngOnInit(){
// Other code
isChecked = this.cookieService.getCookie('isChecked');
}
public fieldChange(values: any){
// Other code
this.cookieService.setCookie('isChecked',isChecked);
}
然后打开yarn remove gulp
并将package.json
替换为
"run-sequence": "^0.3.6",
现在运行
"gulp4-run-sequence": "^1.0.0",
在您的yarn install
中,将Gulpfile.js
替换为
runSequence = require('run-sequence'),
然后,您完成了。 :)
答案 3 :(得分:0)
我遇到了同样的问题,无法安装gulp 3.9.1版本。安装后,是4.0.0。为-g和--save dev安装相同的版本-解决了hasTask的问题,并为CLI和本地提供了3.9.1版本。不要修复漏洞。它将gulp本地设置为4.0.0。
因此,只需安装npm i gulp @3.9.1 -g
和npm i gulp @3.9.1 --save-dev
答案 4 :(得分:0)
我也遇到了同样的错误。从我的研究中我发现是由于gulp 4.0版本造成的。因此,如果您具有gulp4.0及以上版本,则此解决方案适合您。.安装更高的版本,例如 npm install --save-dev gulp@3.9.1,然后我删除了node_modules文件夹并运行 从命令提示符处再次安装npm。.并且现在一切正常,..感谢@tptompkins。
答案 5 :(得分:-1)
正如其他人已经指出的那样,gulp 4.0.0
中发生了重大变化。恢复为gulp 3.9.1
应该可以解决此问题。只需确保您的CLI和本地版本相同即可。您可以通过运行以下命令来检查版本:
gulp -v
就我而言,在降级semantic-ui
之前,尝试安装依赖于gulp.hasTask
功能的另一个软件包gulp
会使问题更加严重。
semantic-ui
软件包在npm
中有一些钩子,因此每次我尝试通过gulp
降级npm install gulp@3.9.1 --save
时,钩子都会插入,但由于失败而失败到其他一些缺少的包裹。结果,gulp
的降级被中止了,而我的版本再次被破坏了。
我通过在特定于版本gulp
的安装下运行所有依赖程序包来使其工作:
npm install gulp@3.9.1 sparkles duplexify ansi-colors path-dirname semantic-ui --save
如果npm
抱怨,您可能需要按顺序添加更多软件包。
答案 6 :(得分:-1)
在阅读完所有建议之后,对我有用的是运行'npm install --save-dev gulp@3.9.1'。我不必删除自己的node_modules文件夹,也不必指定'-g'或'--save-dev'。