关于使用gulp出现的问题与解决方案

228 阅读2分钟

gulp版本过高带来的问题 今天学习gulp,在使用gulp命令进行打包压缩的时候,terminal提示如下错误(第一个问题):

AssertionError: Task function must be specified

查资料找到原因:gulp版本过高,可先通过gulp -v对gulp版本查询,我项目中(package.json)的gulp版本是4.0.0;

先说解决办法,后面说原因: 把package.json中的gulp版本改成4.0以下,如3.9.1,更改完以后在terminal中重新安装:

npm install

这样就解决了第一个问题。

造成一开始提示错误的原因:gulp 3与gulp 4的不同,举个栗子:在gulp 3中,现有A,B,C列表,如果想在一个序列中运行,由于gulp是异步处理机制,可能造成一个问题:把一个文件转换到指定文件夹时,当此文件质量过大,可能还没有转换完全,此文件夹就被gulp打包压缩了,此为 依赖的问题 ;为解决此问题可以在gulpfile.js文件中的gulp.task中添加一个参数:[‘依赖文件名’],如下:

gulp.task("a" , function{
	//任务代码
});
gulp.task("b" , ['a'] , function{
	//任务代码
});
gulp.task("c" , ['b'] ,function{
	//任务代码
});

即执行任务b的时候要在已经完成a的基础上,执行任务c要在已经完成b的基础上;这样就解决了依赖的问题;

BUT,如上操作在gulp4中是不正确的,不想使用Gulp3的方式指定依赖任务,你需要使用gulp.series和gulp.parallel,因为gulp任务现在只有两个参数

gulp.series:按照顺序执行

gulp.paralle:可以并行计算

这里就不再细说gulp4的解决办法,详情可以参考这位大佬的博客:

blog.csdn.net/qq_31975963…

再次运行的时候又出现一个错误的提示(第二个问题):

ReferenceError:primordials is not defined

造成问题原因:gulp版本v3.9.x,node版本v12.xx版本时,会出现安装gulp使用不了插件的问题,此问题为gulp版本和node版本不兼容。

解决办法:

  1. gulp升级到4.0以上(这与第一个问题冲突,不推荐)
  2. node降级11.xx(亦不推荐)
  3. 将graceful-fs升级到在node v12+版本下也可工作的版本4.2.2(推荐)

对于第3点:在package.json同级目录下(项目根目录下)新建文件npm-shrinkwrap.json,输入以下内容:

{
	"dependencies": {
		"graceful-fs": {
			"version": "4.2.2"
		}
	}
}

这样就把第二个问题解决了。

查找资料过程中,感谢这两位大佬的博客帮助:

blog.csdn.net/qq_31975963… blog.csdn.net/weixin_4656…

原文链接:blog.csdn.net/weixin_4389…