我想改善我的节点的DEV体验。为此,我想:
a)当服务器端代码改变时重启我的服务器
b)当客户端代码改变时刷新浏览器。
为了实现这个目标,我开始将nodemon和browserSync集成到我的gulp脚本中。Node.js - 自动刷新在发展
在我一饮而尽剧本,我有以下任务:
gulp.task('startDevEnv', function(done) {
// Begin watching for server-side file changes
nodemon(
{ script: input.server, ignore:[input.views] })
.on('start', function() {
browserSync.init({
proxy: "http://localhost:3002"
});
})
;
// Begin watching client-side file changes
gulp.watch([ input.css, input.js, input.html ], function() { browserSync.reload(); });
done();
});
当上述任务运行时,我的浏览器打开http://localhost:3000/。按预期显示我的应用程序。但是,在控制台窗口中,我注意到:
Error: listen EADDRINUSE :::3002
我理解到一定程度。我在我的server.js文件中有app.set('port', process.env.PORT || 3002);
。然而,我认为这是设定代理价值的目的。不过,每当我修改代码,我看到在我的控制台窗口下面的相关错误:
[07:08:19] [nodemon] restarting due to changes...
[07:08:19] [nodemon] starting `node ./dist/server.js`
events.js:142
throw er; // Unhandled 'error' event
^
TypeError: args.cb is not a function
at Object.init (/Users/me/Website/Develop/node_modules/browser-sync/lib/public/init.js:25:25)
at null.<anonymous> (/Users/me/Website/Develop/gulpfile.js:142:25)
at emitNone (events.js:73:20)
at emit (events.js:167:7)
at Object.run (/Users/me/Website/Develop/node_modules/nodemon/lib/monitor/run.js:97:7)
at Function.run.kill (/Users/me/Website/Develop/node_modules/nodemon/lib/monitor/run.js:221:7)
at null.<anonymous> (/Users/me/Website/Develop/node_modules/nodemon/lib/monitor/run.js:333:7)
at emitOne (events.js:83:20)
at emit (events.js:170:7)
at restartBus (/Users/me/Website/Develop/node_modules/nodemon/lib/monitor/watch.js:162:7)
Me-MBP:Develop me$ events.js:142
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::3002
at Object.exports._errnoException (util.js:856:11)
at exports._exceptionWithHostPort (util.js:879:20)
at Server._listen2 (net.js:1238:14)
at listen (net.js:1274:10)
at Server.listen (net.js:1370:5)
at Object.<anonymous> (/Users/me/Website/Develop/dist/server.js:70:8)
at Module._compile (module.js:399:26)
at Object.Module._extensions..js (module.js:406:10)
at Module.load (module.js:345:32)
at Function.Module._load (module.js:302:12)
在这一点上,我的代码更改不会出现在我的浏览器。我不明白我做错了什么。我怀疑我的端口配置错误。但是,我不确定他们应该如何设置。
默认情况下BrowserSync使用端口3000. BrowserSync还使用端口3001作为BrowserSync UI。出于这两个原因,我想我会在我的server.js文件中将端口设置为3002,并创建如上所示的代理。我究竟做错了什么?
'nodemon' http://stackoverflow.com/questions/24750395/reload-express-js-routes-changes-without-重启服务器 –
你问过类似这里http://stackoverflow.com/questions/35576663/using-browser-sync-with-node-js-app/35740475#35740475 – Satyajeet
这是一个ExpressJS应用程序? – Trevor