gulp + browser-sync无法获取/错误

时间:2016-05-02 20:58:28

标签: gulp browser-sync gulp-browser-sync

我正在学习前端构建系统目前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"所以问题是什么,并尝试向我解释,以便从中获取一些东西。

8 个答案:

答案 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']);