gulp browsersync 的错误
the error with gulp browsersync
我下面有一些 gulpfile.js,但有问题。确切地说,当我在终端中输入 gulp 时出现错误:
'browserSync' 614 微秒后出错
[20:52:42]
TypeError: args.cb is not a function
at Object.init
at Gulp.<anonymous>
at module.exports
at Gulp.Orchestrator._runTask
at Gulp.Orchestrator._runStep
at Gulp.Orchestrator.start
at Gulp.<anonymous>
at module.exports
at Gulp.Orchestrator._runTask
at Gulp.Orchestrator._runStep
我的gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
var autoprefixer = require('gulp-autoprefixer');
var sassdoc = require('sassdoc');
var jshint = require('gulp-jshint');
var src = {
html:['./app/index.html'],
js:['./app/js/app.js']
};
var sassOptions = {
errLogToConsole: true,
outputStyle: 'expanded'
};
var autoprefixerOptions = {
browsers: ['last 15 versions', '> 5%', 'Firefox ESR']
};
jshint: {
options: {
node: true
}
}
//tasks
gulp.task('default', ['watch'], function(){
gulp.start('watch');
});
gulp.task('lint', function() {
return gulp.src('./app/js/app.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
gulp.task('browserSync', function() {
browserSync.init({
server: {
baseDir: 'app',
index: 'index.html'
},
port: 3000,
open: true
});
});
gulp.task('sass', function() {
return gulp.src('app/scss/**/*.scss')
.pipe(sass(sassOptions).on('error', sass.logError))
.pipe(autoprefixer(autoprefixerOptions))
.pipe(sassdoc())
.pipe(gulp.dest('app/css'))
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('html', function(){
gulp.src(src.html)
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('js', function(){
gulp.src(src.js)
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('watch', ['browserSync', 'sass'], function(){
gulp.watch('./app/scss/**/*.scss', ['sass']);
gulp.watch('./app/**/*.html', ['html']);
gulp.watch('./app/js/app.js', ['js']);
// Other watchers
})
除了不能直接打开 index.html 文件,只是清空浏览器 window 之外,一切正常。谁能告诉我错误和直接打开 index.html 文件有什么问题?
也许试试这个:
gulp.task('browserSync', function(done) {
browserSync.init({
server: {
baseDir: 'app',
index: 'index.html'
},
port: 3000,
open: true
});
done();
});
只是一个快速的猜测,这就是我的设置和工作方式。您的错误消息表明它可能正在寻找回调函数。
我认为您不应该将 watch
既作为 default
的依赖项又在函数中调用它。
也许可以将 default
替换为:
//tasks
gulp.task('default', ['watch']);
我下面有一些 gulpfile.js,但有问题。确切地说,当我在终端中输入 gulp 时出现错误: 'browserSync' 614 微秒后出错 [20:52:42]
TypeError: args.cb is not a function
at Object.init
at Gulp.<anonymous>
at module.exports
at Gulp.Orchestrator._runTask
at Gulp.Orchestrator._runStep
at Gulp.Orchestrator.start
at Gulp.<anonymous>
at module.exports
at Gulp.Orchestrator._runTask
at Gulp.Orchestrator._runStep
我的gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
var autoprefixer = require('gulp-autoprefixer');
var sassdoc = require('sassdoc');
var jshint = require('gulp-jshint');
var src = {
html:['./app/index.html'],
js:['./app/js/app.js']
};
var sassOptions = {
errLogToConsole: true,
outputStyle: 'expanded'
};
var autoprefixerOptions = {
browsers: ['last 15 versions', '> 5%', 'Firefox ESR']
};
jshint: {
options: {
node: true
}
}
//tasks
gulp.task('default', ['watch'], function(){
gulp.start('watch');
});
gulp.task('lint', function() {
return gulp.src('./app/js/app.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
gulp.task('browserSync', function() {
browserSync.init({
server: {
baseDir: 'app',
index: 'index.html'
},
port: 3000,
open: true
});
});
gulp.task('sass', function() {
return gulp.src('app/scss/**/*.scss')
.pipe(sass(sassOptions).on('error', sass.logError))
.pipe(autoprefixer(autoprefixerOptions))
.pipe(sassdoc())
.pipe(gulp.dest('app/css'))
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('html', function(){
gulp.src(src.html)
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('js', function(){
gulp.src(src.js)
.pipe(browserSync.reload({
stream: true
}))
});
gulp.task('watch', ['browserSync', 'sass'], function(){
gulp.watch('./app/scss/**/*.scss', ['sass']);
gulp.watch('./app/**/*.html', ['html']);
gulp.watch('./app/js/app.js', ['js']);
// Other watchers
})
除了不能直接打开 index.html 文件,只是清空浏览器 window 之外,一切正常。谁能告诉我错误和直接打开 index.html 文件有什么问题?
也许试试这个:
gulp.task('browserSync', function(done) {
browserSync.init({
server: {
baseDir: 'app',
index: 'index.html'
},
port: 3000,
open: true
});
done();
});
只是一个快速的猜测,这就是我的设置和工作方式。您的错误消息表明它可能正在寻找回调函数。
我认为您不应该将 watch
既作为 default
的依赖项又在函数中调用它。
也许可以将 default
替换为:
//tasks
gulp.task('default', ['watch']);