Grunt + Express + LiveReload在默认端口3000上不断重启服务器

我有一个通过简单的基于Express的Node.js服务器生成的Handlebars驱动的模板应用程序。 为了便于开发,我一直在努力使用Grunt来重新加载。

我已经阅读了大量的博客和GitHub关于设置实时重载的自述文件; 这被certificate是一个非常周期性的杂务(一页链接到另一页,导致另一页,等等)。 没有我读的是一致的, 一切似乎都支持实时重新加载,而没有真正解释如何去做 – 这是一个很难find一个明确的方法来做到这一点!

但是,我有一个工作,自我重新加载,快速驱动的项目,通过以下:

Gruntfile.js

var files = [ 'markup/*', 'examples/*' ] module.exports = function(grunt) { require('load-grunt-tasks')(grunt) grunt.initConfig({ express: { options: { port: 8080 }, dev: { options: { port: 8080, script: 'server.js', background: true } } }, watch: { options: { livereload: true }, express: { files: files, tasks: ['express:dev'], options: { spawn: false } }, }, }) grunt.registerTask('default', ['express:dev', 'watch']) } 

的package.json

 ... "devDependencies": { "connect-livereload": "^0.5.4", "grunt": "~0.4.5", "grunt-contrib-watch": "^1.0.0", "grunt-express-server": "^0.5.3", "load-grunt-tasks": "^3.5.0" } ... 

在我的Express应用程序中,server.js:

 // Live reload app.use(require('connect-livereload')({ port: 35729 })) // Server var server = app.listen(process.env.PORT || 8080, function() { console.log("Express app started on port " + server.address().port) }) 

在我的Handlebars驱动的index.html模板中:

 <script src="//localhost:35729/livereload.js"></script> 

现在所有东西都在工作 – 我只需从项目目录运行$ grunt ,然后加载页面; 然后在我更改后端文件时按预期重新加载。


问题:

当我用咕噜声启动项目时,会发生以下情况:

 > $ grunt Running "express:dev" (express) task Starting background Express server Express app started on port 8080 Running "watch" task Waiting... >> File "components/el.html" changed. Running "express:web" (express) task Stopping Express server Starting background Express server >> File "components/el.html" changed. Running "express:dev" (express) task Stopping Express server Starting background Express server Express app started on port 3000 Running "watch:web" (watch) task Completed in 0.491s at Thu May 19 2016 12:37:33 GMT-0700 (PDT) - Waiting... Express app started on port 8080 Running "watch" task Completed in 0.484s at Thu May 19 2016 12:37:33 GMT-0700 (PDT) - Waiting... 

请注意Express应用程序现在正在同时在 :3000:8080进行监听吗? 这是怎么回事? 我假设这是我的gruntfile中没有设置正确的东西?