我的gulp和浏览器同步设置让我感到非常奇怪。
当我运行gulp serve
任务时,gulp任务会运行并构建所有内容并打开Web浏览器,它就会停留在那里。我去检查控制台,我收到了这个错误。
[gulp-bs] Watching files...
[gulp-bs] [proxy error] connect ECONNREFUSED
Mongoose connected to mongodb://localhost/<database name>
现在有趣的是,当我使用浏览器栏点击该URL来加载应用程序时,所有内容都正确加载。
为什么会发生仅第一次时间,但后续重新加载浏览器网址会有效?
我似乎无法弄清楚导致此错误的原因,我不想在初始加载后继续重新加载浏览器。
浏览器同步的我的gulp设置如下所示:
"gulp": "^3.9.0",
"browser-sync": "^2.7.13"
从nodemon
gulp-task调用该函数。
function serve(isDev) {
var options = {
script: config.nodeServer,
delayTime: 1,
env: {
"PORT": config.port,
"NODE_ENV": isDev ? "dev" : "production"
}
};
$.nodemon(options)
.on("restart", function(ev) {
log("*** nodemon restarted.");
log("files changed on restart: " + ev);
setTimeout(function() {
browserSync.notify("Reloading now...");
browserSync.reload({
stream: false
});
}, config.browserReloadDelay);
})
.on("start", function() {
log("*** nodemon started.");
startBrowserSync(isDev);
})
.on("crash", function() {
log("*** nodemon crashed due to unexpected reason(s).");
})
.on("exit", function() {
log("*** nodemon exited successfully!.");
});
}
浏览器同步功能:
function startBrowserSync(isDev) {
log("*** Starting browser sync");
if (browserSync.active || args.nosync) {
return;
}
if (isDev) {
gulp.watch([config.styles], ["styles"])
.on("change", function(event) {
changeEvent(event);
});
gulp.watch([config.js], ["wiredep"])
.on("change", function(event) {
changeEvent(event);
});
} else {
gulp.watch([config.styles, config.js, config.html], ["optimize", browserSync.reload])
.on("change", function(event) {
changeEvent(event);
});
}
var options = {
proxy: "localhost:" + config.port,
port: 8000,
files: isDev ? [
config.client + "**/*.*",
"!" + config.styles,
config.css + "**/*.css"
] : [],
ghostMode: {
clicks: true,
scroll: true,
location: false,
forms: true
},
injectChanges: true,
logFileChanges: true,
logLevel: "debug",
logPrefix: "gulp-bs",
notify: true,
reloadDelay: 1,
};
browserSync(options);
}
config.port
值设置为3000,从配置文件中读取。