browserSync + Gulp, getting error => TypeError: _.contains is not a function
browserSync + Gulp, getting error => TypeError: _.contains is not a function
我已经安装了 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
中使用的 link。
无论如何我 运行 gulp serve
它自动启动了一个新的 Chrome window 路径为: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;
}
根据@Phil https://github.com/BrowserSync/browser-sync/issues/976
不得不升级 lodash,现在可以了。
我已经安装了 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
中使用的 link。
无论如何我 运行 gulp serve
它自动启动了一个新的 Chrome window 路径为: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;
}
根据@Phil https://github.com/BrowserSync/browser-sync/issues/976
不得不升级 lodash,现在可以了。