浏览器同步 TypeError args.cb 不是函数
Browser-sync TypeError args.cb is not a function
我在 gulp 任务中使用浏览器同步,例如:
gulp.task('gulp-task',function(){
browserSync.init({
server:{
baseDir: 'app'
}
})
//rest of task
});
我在 gulp 中使用这个 gulp 任务,注意(例如)app/**/*.html
,例如:
gulp.task('watch',function(){
gulp.watch('app/**/*.html', ['gulp-task']);
});
第一次更改 html 文件一切正常,但下次更改时出现错误:
TypeError: args.cbn is not a function ...
大家说要使用以下命令安装最新版本的浏览器同步:
npm install browser-sync@latest --save-dev
这并没有帮助。
我遇到了同样的错误。怎么了?
我也 运行 解决了这个问题,并通过从 watch 任务的回调中删除括号解决了这个问题。
尝试将您的监视任务更改为:
gulp.task('watch',function(){
gulp.watch(['app/**/*.html'], 'gulp-task');
});
或者更好的是,尝试使用像这样的重新加载方法:
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var jshint = require('gulp-jshint');
var watch = require('gulp-watch');
var reload = browserSync.reload;
gulp.task('default', ['jshint', 'serve', 'watch']);
gulp.task('jshint', function() {
return gulp.src('src/app/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});
// Static server
gulp.task('serve', function() {
browserSync.init({
server: {
baseDir: "./src"
}
});
});
gulp.task('watch', function() {
gulp.watch(['src/**/*.html', 'src/app/**/*.js'], reload);
});
看了browser-sync的文档后,我注意到方法.init( config, cb )
有两个参数。所以,把你的代码改成这样:
gulp.task('gulp-task',function(){
browserSync.init({
server:{
baseDir: 'app'
}
})
//rest of task
},function(){
// something you want to do
});
在定义 'watch' 时,我们需要在 watch 之前声明所有任务需要 运行,这将解决问题。
需要在监视任务参数列表中添加带有预先计划任务的额外参数。
gulp.task('watch', ['browserSync', 'sass'], function(){...})
var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
gulp.task('hello', function() {
console.log('Hello Gulp-Shash');
});
gulp.task('sass', function(){
return gulp.src('app/scss/**/*.scss')
.pipe(sass())
.pipe(gulp.dest('app/css'))
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('browserSync', function() {
browserSync.init({
server: {
baseDir: 'app'
},
})
})
gulp.task('watch', ['browserSync', 'sass'], function(){
gulp.watch('app/scss/**/*.scss', ['sass']);
})
我在 gulp 任务中使用浏览器同步,例如:
gulp.task('gulp-task',function(){
browserSync.init({
server:{
baseDir: 'app'
}
})
//rest of task
});
我在 gulp 中使用这个 gulp 任务,注意(例如)app/**/*.html
,例如:
gulp.task('watch',function(){
gulp.watch('app/**/*.html', ['gulp-task']);
});
第一次更改 html 文件一切正常,但下次更改时出现错误:
TypeError: args.cbn is not a function ...
大家说要使用以下命令安装最新版本的浏览器同步:
npm install browser-sync@latest --save-dev
这并没有帮助。
我遇到了同样的错误。怎么了?
我也 运行 解决了这个问题,并通过从 watch 任务的回调中删除括号解决了这个问题。
尝试将您的监视任务更改为:
gulp.task('watch',function(){
gulp.watch(['app/**/*.html'], 'gulp-task');
});
或者更好的是,尝试使用像这样的重新加载方法:
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var jshint = require('gulp-jshint');
var watch = require('gulp-watch');
var reload = browserSync.reload;
gulp.task('default', ['jshint', 'serve', 'watch']);
gulp.task('jshint', function() {
return gulp.src('src/app/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});
// Static server
gulp.task('serve', function() {
browserSync.init({
server: {
baseDir: "./src"
}
});
});
gulp.task('watch', function() {
gulp.watch(['src/**/*.html', 'src/app/**/*.js'], reload);
});
看了browser-sync的文档后,我注意到方法.init( config, cb )
有两个参数。所以,把你的代码改成这样:
gulp.task('gulp-task',function(){
browserSync.init({
server:{
baseDir: 'app'
}
})
//rest of task
},function(){
// something you want to do
});
在定义 'watch' 时,我们需要在 watch 之前声明所有任务需要 运行,这将解决问题。 需要在监视任务参数列表中添加带有预先计划任务的额外参数。
gulp.task('watch', ['browserSync', 'sass'], function(){...})
var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
gulp.task('hello', function() {
console.log('Hello Gulp-Shash');
});
gulp.task('sass', function(){
return gulp.src('app/scss/**/*.scss')
.pipe(sass())
.pipe(gulp.dest('app/css'))
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('browserSync', function() {
browserSync.init({
server: {
baseDir: 'app'
},
})
})
gulp.task('watch', ['browserSync', 'sass'], function(){
gulp.watch('app/scss/**/*.scss', ['sass']);
})