【问题标题】:browserSync + Gulp, getting error => TypeError: _.contains is not a functionbrowserSync + Gulp,出现错误 => TypeError: _.contains is not a function
【发布时间】:2016-06-24 18:04:40
【问题描述】:

我已经安装了browserSync,以便在我更新 CSS 或 html 模板时让我的浏览器自动刷新。

在我的 gulp 文件中:

var browserSync = require('browser-sync').create();

还有我的监视任务:

// Static Server + watching scss/html files
gulp.task('serve', ['app-css'], function() {

    browserSync.init({
        // server: "./app"
        proxy: 'http://localhost/static/dashboard/app/'
    });

    gulp.watch("sass-smacss/sass/**/*.scss", ['app-css']);
    gulp.watch("app/**/*.html").on('change', browserSync.reload);
});

我有一个本地服务器,所以这是我在上面的proxy 使用的链接。

不管怎样,我运行了gulp serve,它会自动启动一个新的 Chrome 窗口,路径如下:http://localhost:3000/static/dashboard/app/#/login

接下来,我只需在我的一个 sass 文件中点击保存,它就会抛出以下错误:

[21:52:37] Starting 'app-css'...
/Users/leongaban/Projects/TickerTags/dashboard/node_modules/browser-sync/lib/file-utils.js:48
        if (!_.contains(options.get("injectFileTypes").toJS(), obj.ext)) {
               ^
TypeError: _.contains is not a function
    at Object.fileUtils.getFileInfo (/Users/leongaban/Projects/TickerTags/dashboard/node_modules/browser-sync/lib/file-utils.js:48:16)
    at Object.fileUtils.changedFile (/Users/leongaban/Projects/TickerTags/dashboard/node_modules/browser-sync/lib/file-utils.js:26:57)
    at EventEmitter.events.file:changed (/Users/leongaban/Projects/TickerTags/dashboard/node_modules/browser-sync/lib/internal-events.js:13:23)
    at emitOne (events.js:77:13)
    at EventEmitter.emit (events.js:169:7)
    at Object.emitChangeEvent (/Users/leongaban/Projects/TickerTags/dashboard/node_modules/browser-sync/lib/public/public-utils.js:13:17)
    at Transform.reload._transform (/Users/leongaban/Projects/TickerTags/dashboard/node_modules/browser-sync/lib/public/stream.js:70:31)
    at Transform._read (_stream_transform.js:167:10)
    at Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:292:12)

这里是/node_modules/browser-sync/lib/file-utils.js:48

/**
 * @param data
 * @param options
 * @returns {{assetFileName: *, fileExtension: String}}
 */
getFileInfo: function (data, options) {

    data.ext      = require("path").extname(data.path).slice(1);
    data.basename = require("path").basename(data.path);

    var obj = {
        ext:           data.ext,
        path:          data.path,
        basename:      data.basename,
        type:          "inject"
    };

    // RELOAD page
    if (!_.contains(options.get("injectFileTypes").toJS(), obj.ext)) {
        obj.url  = obj.path;
        obj.type = "reload";
    }

    obj.path = data.path;
    obj.log  = data.log;

    return obj;
}

【问题讨论】:

标签: javascript gulp browser-sync gulp-sass


【解决方案1】:

每@Phil https://github.com/BrowserSync/browser-sync/issues/976

必须升级 lodash,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2018-07-23
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多