Gulp压缩问题整理及解决

一、Local gulp not found ,Try running: npm install gulp(找不到本地gulp)

本问题提示npm install gulp,但是运行之后根本不行。
解决办法:输入cnpm link gulp,在项目目录中运行,目的是创建指向全局安装的Gulp模块的本地链接。
(如果不起作用,可以尝试npm link gulp --no-bin-links看是否有效)

二、The following tasks did not complete: Did you forget to signal async completion?(没有异步完成信号)

在这里插入图片描述
造成这种原因大部分是因为版本原因导致,这个时候你需要执行gulp -v查看本地的gulp版本。
在4中任务执行更加严格,你的任务如果没有显式发出异步完成的信号,那么这个任务就不会执行,你必须明确的写出任务完成并返回。
解决办法:具体操作我是在需要执行的任务最后加入了:

return new Promise(function(resolve, reject) {
        console.log("HTTP Server Started");
        resolve();
    });

这样任务就可以执行了。

其他解决办法:

1. 返回一个stream

这种操作方式是用来新建task的,和3.x的用法一样。


var print = require('gulp-print');
 
gulp.task('server', () => {
  return gulp.src('package.json')
    .pipe(print(function() { return 'HTTP Server Started'; }));
});
2. 返回一个Promise

在异步请求机制中,是有一个Promise对象的,它包含了请求的过程中所有内容。如下:

gulp.task('server', () => { 
  return new Promise(function(resolve, reject) {
    console.log("HTTP Server Started");
    resolve();
  });
});
3. 返回一个回调函数

这个是最简单的一种方法,gulp会自动将这个回调函数作为一个参数返回到任务中,在完成的时候一定要调用这个函数。如下:

gulp.task('default', gulp.series('server', (done) => done()))
4. 返回一个子进程child process

当我们只是执行一段纯js代码,没有用到node相关的方法时用这个方法

const spawn = require('child_process').spawn;
 
gulp.task('server', function() {
  return spawn('echo', ['HTTP', 'Server', 'Started'], { stdio: 'inherit' });
});
5. 返回一个 RxJS Observable.

如果你是用RxJS 的时候,可以用这个方法。

const Observable = require('rx').Observable;
 
gulp.task('server', function() {
  let o = Observable.just('HTTP Server Started');
  o.subscribe(function(str) {
    console.log(str);
  });
  return o;
});
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值