Gulp 使用带Web Starter工具包的BrowserSync获取错误

Gulp 使用带Web Starter工具包的BrowserSync获取错误,gulp,ubuntu-14.04,Gulp,Ubuntu 14.04,我按照Web初学者工具包页面上的说明进行操作,但在运行gulp serve时出错: /home/jenn/web/web-starter-kit/node_modules/browser-sync/node_modules/serve-static/node_modules/send/node_modules/etag/index.js:55 throw new TypeError('argument entity must be string, Buffer, or fs.Stats'

我按照Web初学者工具包页面上的说明进行操作,但在运行gulp serve时出错:

/home/jenn/web/web-starter-kit/node_modules/browser-sync/node_modules/serve-static/node_modules/send/node_modules/etag/index.js:55
    throw new TypeError('argument entity must be string, Buffer, or fs.Stats')
          ^
TypeError: argument entity must be string, Buffer, or fs.Stats
    at etag (/home/jenn/web/web-starter-kit/node_modules/browser-sync/node_modules/serve-static/node_modules/send/node_modules/etag/index.js:55:11)
    at SendStream.setHeader (/home/jenn/web/web-starter-kit/node_modules/browser-sync/node_modules/serve-static/node_modules/send/index.js:724:15)
    at SendStream.send (/home/jenn/web/web-starter-kit/node_modules/browser-sync/node_modules/serve-static/node_modules/send/index.js:500:8)
    at /home/jenn/web/web-starter-kit/node_modules/browser-sync/node_modules/serve-static/node_modules/send/index.js:630:12
    at Object.oncomplete (fs.js:93:15)
请帮忙

@agconti,您没有指定需要哪个gulpfile.js,所以我按顺序提供了Web初学者工具包和BrowserSync:

网络入门工具包

'use strict';

// Include Gulp & Tools We'll Use
var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var del = require('del');
var runSequence = require('run-sequence');
var browserSync = require('browser-sync');
var pagespeed = require('psi');
var reload = browserSync.reload;

var AUTOPREFIXER_BROWSERS = [
  'ie >= 10',
  'ie_mob >= 10',
  'ff >= 30',
  'chrome >= 34',
  'safari >= 7',
  'opera >= 23',
  'ios >= 7',
  'android >= 4.4',
  'bb >= 10'
];

// Lint JavaScript
gulp.task('jshint', function () {
  return gulp.src('app/scripts/**/*.js')
    .pipe(reload({stream: true, once: true}))
    .pipe($.jshint())
    .pipe($.jshint.reporter('jshint-stylish'))
    .pipe($.if(!browserSync.active, $.jshint.reporter('fail')));
});

// Optimize Images
gulp.task('images', function () {
  return gulp.src('app/images/**/*')
    .pipe($.cache($.imagemin({
      progressive: true,
      interlaced: true
    })))
    .pipe(gulp.dest('dist/images'))
    .pipe($.size({title: 'images'}));
});

// Copy All Files At The Root Level (app)
gulp.task('copy', function () {
  return gulp.src([
    'app/*',
    '!app/*.html',
    'node_modules/apache-server-configs/dist/.htaccess'
  ], {
    dot: true
  }).pipe(gulp.dest('dist'))
    .pipe($.size({title: 'copy'}));
});

// Copy Web Fonts To Dist
gulp.task('fonts', function () {
  return gulp.src(['app/fonts/**'])
    .pipe(gulp.dest('dist/fonts'))
    .pipe($.size({title: 'fonts'}));
});

// Compile and Automatically Prefix Stylesheets
gulp.task('styles', function () {
  // For best performance, don't add Sass partials to `gulp.src`
  return gulp.src([
    'app/styles/*.scss',
    'app/styles/**/*.css',
    'app/styles/components/components.scss'
  ])
    .pipe($.changed('styles', {extension: '.scss'}))
    .pipe($.rubySass({
      style: 'expanded',
      precision: 10
    }))
    .on('error', console.error.bind(console))
    .pipe($.autoprefixer({browsers: AUTOPREFIXER_BROWSERS}))
    .pipe(gulp.dest('.tmp/styles'))
    // Concatenate And Minify Styles
    .pipe($.if('*.css', $.csso()))
    .pipe(gulp.dest('dist/styles'))
    .pipe($.size({title: 'styles'}));
});

// Scan Your HTML For Assets & Optimize Them
gulp.task('html', function () {
  var assets = $.useref.assets({searchPath: '{.tmp,app}'});

  return gulp.src('app/**/*.html')
    .pipe(assets)
    // Concatenate And Minify JavaScript
    .pipe($.if('*.js', $.uglify({preserveComments: 'some'})))
    // Remove Any Unused CSS
    // Note: If not using the Style Guide, you can delete it from
    // the next line to only include styles your project uses.
    .pipe($.if('*.css', $.uncss({
      html: [
        'app/index.html',
        'app/styleguide.html'
      ],
      // CSS Selectors for UnCSS to ignore
      ignore: [
        /.navdrawer-container.open/,
        /.app-bar.open/
      ]
    })))
    // Concatenate And Minify Styles
    // In case you are still using useref build blocks
    .pipe($.if('*.css', $.csso()))
    .pipe(assets.restore())
    .pipe($.useref())
    // Update Production Style Guide Paths
    .pipe($.replace('components/components.css', 'components/main.min.css'))
    // Minify Any HTML
    .pipe($.if('*.html', $.minifyHtml()))
    // Output Files
    .pipe(gulp.dest('dist'))
    .pipe($.size({title: 'html'}));
});

// Clean Output Directory
gulp.task('clean', del.bind(null, ['.tmp', 'dist']));

// Watch Files For Changes & Reload
gulp.task('serve', ['styles'], function () {
  browserSync({
    notify: false,
    // Run as an https by uncommenting 'https: true'
    // Note: this uses an unsigned certificate which on first access
    //       will present a certificate warning in the browser.
    // https: true,
    server: ['.tmp', 'app']
  });

  gulp.watch(['app/**/*.html'], reload);
  gulp.watch(['app/styles/**/*.{scss,css}'], ['styles', reload]);
  gulp.watch(['app/scripts/**/*.js'], ['jshint']);
  gulp.watch(['app/images/**/*'], reload);
});

// Build and serve the output from the dist build
gulp.task('serve:dist', ['default'], function () {
  browserSync({
    notify: false,
    // Run as an https by uncommenting 'https: true'
    // Note: this uses an unsigned certificate which on first access
    //       will present a certificate warning in the browser.
    // https: true,
    server: 'dist'
  });
});

// Build Production Files, the Default Task
gulp.task('default', ['clean'], function (cb) {
  runSequence('styles', ['jshint', 'html', 'images', 'fonts', 'copy'], cb);
});

// Run PageSpeed Insights
// Update `url` below to the public URL for your site
gulp.task('pagespeed', pagespeed.bind(null, {
  // By default, we use the PageSpeed Insights
  // free (no API key) tier. You can use a Google
  // Developer API key if you have one. See
  // http://goo.gl/RkN0vE for info key: 'YOUR_API_KEY'
  url: 'https://example.com',
  strategy: 'mobile'
}));

// Load custom tasks from the `tasks` directory
try { require('require-dir')('tasks'); } catch (err) {}
浏览器同步

"use strict";

var gulp        = require("gulp");
var jshint      = require("gulp-jshint");
var contribs    = require("gulp-contribs");
var rubySass    = require("gulp-ruby-sass");
var filter      = require("gulp-filter");
var browserSync = require("./index");

gulp.task("lint", function () {
    gulp.src([
        "*.js",
        "lib/**/*.js",
        "!lib/cli/cli-template.js",
        "!lib/public/socket.io.js",
        "test/specs/**/*.js",
        "!test/fixtures/**"
    ])
        .pipe(jshint("test/specs/.jshintrc"))
        .pipe(jshint.reporter("default"))
        .pipe(jshint.reporter("fail"));
});

gulp.task("contribs", function () {
    gulp.src("README.md")
        .pipe(contribs())
        .pipe(gulp.dest("./"));
});

gulp.task("default", ["lint"]);

var paths = {
    scss: "test/fixtures/scss/*.scss",
    css: "test/fixtures/css",
    cssGlob: "test/fixtures/assets/*.css",
    html: "test/fixtures/*.html"
};

gulp.task("sass", function () {
    browserSync.notify("Compiling SCSS files... Please Wait");
    return gulp.src(paths.scss)
        .pipe(rubySass({sourcemap: true}))
        .pipe(gulp.dest(paths.css))
        .pipe(filter("**/*.css"))
        .pipe(browserSync.reload({stream:true}));
});

/**
 * Start BrowserSync
 */
gulp.task("browser-sync", function () {

//    var clientScript = require("/Users/shakyshane/Sites/browser-sync-modules/browser-sync-client/index");
//
//    browserSync.use("client:script", clientScript.middleware, function (err) {
//        console.log(err);
//    });

    browserSync({
        server: {
            baseDir: "test/fixtures"
        },
        startPath: "sass.html"
    });
});

/**
 * Start BrowserSync
 */
gulp.task("browser-sync-css", function () {
    browserSync({
        server: {
            baseDir: "test/fixtures"
        }
    });
});

///**
// * Reload task
// */
//gulp.task("bs-reload", function () {
//    browserSync.reload();
//});

/**
 * Watch stuff
 */
gulp.task("watch", ["browser-sync"], function () {
    gulp.watch(paths.scss, ["sass"]);
//    gulp.watch(paths.html, ["bs-reload"]);
});

/**
 * Watch stuff
 */
gulp.task("watch-css", ["browser-sync-css"], function () {
    gulp.watch(paths.cssGlob, function (file) {
        browserSync.reload(file.path);
    });
    gulp.watch(paths.html, browserSync.reload);
});


gulp.task("docs", function () {

    var yuidoc = require("gulp-yuidoc");

    gulp.src(["./index.js", "./lib/default-config.js"])
        .pipe(yuidoc.parser({spaces: 4}))
        .pipe(gulp.dest("./doc"));
});
更新


我只是试着按照同样的步骤在一台单独的Mac电脑上安装WebStarter工具包,当我运行
gulp serve
时,我成功地从BrowserSync获得了响应。有人知道为什么我可以在Mac电脑上毫无错误地运行它,但在Ubuntu 14.04上尝试时遇到了这个问题吗?

节点0.11.13和
发送
&
etag
浏览器同步的依赖项出现错误

我发布了一个bug:


现在,您可以降级到节点0.11.12或0.10.x。

节点0.11.13和
send
&
etag
浏览器同步的依赖项出现错误

我发布了一个bug:


现在,您可以降级到Node 0.11.12或0.10.x.

当我说我已经按顺序遵循了说明时,我的意思是我已经成功地安装了ruby、Node、sass gem和gulp。我可以建立项目,但不能阶段与吞咽服务项目。我试图寻找答案,但找不到答案。请发布您的
gulpfile.js
,当我说我已按顺序遵循说明时,我的意思是我已成功安装ruby、node、sass gem和gulp。我可以建立项目,但不能阶段与吞咽服务项目。我试图寻找答案,但找不到。请发布你的
gulpfile.js
我从0.13.x降级到了0.10.32,效果非常好。非常感谢。我从0.13.x降到了0.10.32,效果非常好。非常感谢。