我正在学习前端构建系统目前gulp,我想使用brower-sync,问题是它不会在commad行中抛出错误,而是当它调出浏览器时它不会显示我的html文件,它会说"不能GET /"浏览器窗口中的错误。这是我的gulpfile.js代码
var gulp = require('gulp'),
uglify = require('gulp-uglify'),
compass= require('gulp-compass'),
plumber = require('gulp-plumber'),
autoprefixer = require('gulp-autoprefixer'),
browserSync = require('browser-sync'),
reload = browserSync.reload,
rename = require('gulp-rename');
gulp.task('scripts', function() {
gulp.src(['public/src/js/**/*.js', '!public/src/js/**/*.min.js'])
.pipe(plumber())
.pipe(rename({suffix: '.min'}))
.pipe(uglify())
.pipe(gulp.dest('public/src/js/'));
});
gulp.task('styles', function() {
gulp.src('public/src/scss/main.scss')
.pipe(plumber())
.pipe(compass({
config_file: './config.rb',
css: './public/src/css/',
sass: './public/src/scss/'
}))
.pipe(autoprefixer('last 2 versions'))
.pipe(gulp.dest('public/src/css/'))
.pipe(reload({stream:true}));
});
gulp.task('html', function() {
gulp.src('public/**/*.html');
});
gulp.task('browser-sync', function() {
browserSync({
server: {
baseDir: "./public/"
}
});
});
gulp.task('watch', function() {
gulp.watch('public/src/js/**/*.js', ['scripts']);
gulp.watch('public/src/scss/**/*.scss', ['styles']);
gulp.watch('public/**/*.html', ['html']);
});
gulp.task('default', ['scripts', 'styles', 'html', 'browser-sync', 'watch']);
我正在使用windows和git bash,版本是"browser-sync": "^2.12.5"
所以问题是什么,并尝试向我解释,以便从中获取一些东西。
答案 0 :(得分:8)
index.html
文件夹中是否有./public/
个文件?如果没有,您需要告诉browserSync您的起始页是什么。您还可以使用browserSync来显示基本目录的列表,请参阅下面的更新。
您也可以尝试使用public
而不使用前导点。
修改:startPath配置指令似乎不起作用,请改用<{1}}
index
更新:实际上,您可以使用browserSync获取目录列表。这样它会显示...
gulp.task('browser-sync', function() {
browserSync({
server: {
baseDir: "public/",
index: "my-start-page.html"
}
});
});
...
中的文件列表,而不是“无法获取错误”
public
答案 1 :(得分:3)
当index.html文件位于同一文件夹中时,我得到了这个工作:
browserSync.init({
server: {
baseDir: "./"
}
});
答案 2 :(得分:3)
gulp.task('browser-sync', function() {
browserSync({
server: {
baseDir: "./"
},
port: 8080,
open: true,
notify: false
});
});
答案 3 :(得分:0)
我通过始终在代码中指向.html文件,或者使用以和index.html结尾的文件夹结构来解决浏览器同步中的“无法获取”错误
var gulp = require('gulp');
var shell = require('gulp-shell');
var browserSync = require('browser-sync').create();
gulp.task('build', shell.task(['jekyll build --watch']));
// serving blog with Browsersync
gulp.task('serve', function () {
browserSync.init(
{
server: {baseDir: '_site/'}
}
);
// Reloads page when some of the already built files changed:
gulp.watch('_site/**/*.*').on('change', browserSync.reload);
});
gulp.task('default', ['build', 'serve']);
我的Gulp文件供参考(使用浏览器与jekyll同步,所以一切都在./_site文件夹中,gulpfile在./)中。
DateTimeFormatter dtfr = DateTimeFormatter.ofPattern("EEEE, MMMM d", locale);
return dtfr.format(localDate);
希望它有所帮助。
米开朗基罗
答案 4 :(得分:0)
您可能index.html
中没有baseDir: '_site/'
吗?要在Web浏览器中查看静态网页而不是恼人的消息,您必须将文件your_file.html
重命名为index.html
。这将解决Can not GET / problem。
答案 5 :(得分:0)
gulp.task('serve',['sass'], function() {
bs.init({
server: "./app",
startPath: "/index.html", // After it browser running
browser: 'chrome',
host: 'localhost',
port: 4000,
open: true,
tunnel: true
});
答案 6 :(得分:0)
对于我来说,这对我有帮助:
server: {
baseDir: '.',
index: "index.html"
}
答案 7 :(得分:0)
gulp.task('server', function()
{
browserSync.init(["public/src/css/","public/src/js"],{
server: "./",
startPath: "./index.html", // After it browser running
// browser: 'chrome',
host: 'localhost',
// port: 4000,
open: true,
tunnel: true });
});
gulp.task('default', ['scripts', 'styles', 'html', 'server', 'watch']);