1

我知道 EADDRINUSE 发生在节点尝试将自己绑定到已经在使用的端口时。

问题是,当我的代码发生更改时,这一切都与 gulp nodemon 结合使用以重新启动。自从我将代码从 bin/www 移动到我的 app.js 文件中后,我就觉得我遇到了这个错误。

bin/www 看起来像这样:

#!/usr/bin/env node
var app = require('../app');

gulp.js 使用以下代码重新启动我的服务器:

// nodemon task
gulp.task('nodemon', function(){
  nodemon({ script: 'bin/www', ext: 'html js' })
  .on('change', ['styles-website', 'watch', 'test'])
  .on('restart', function(){
    console.log('restarted nodemon!')
  })
});

在我的 app.js 文件中,我有这个来启动服务器:

var server = app.listen(app.get('port'), function() {
  console.log("Express server started!");
});

这一切在我第一次启动 gulp 时工作正常,但现在当 gulp 重新启动时,我收到错误:

Error: listen EADDRINUSE

我感觉这与将代码从 bin/www 中移出有关(让 socket.io 在我的应用程序 var 上工作是必需的)

有谁知道如何解决这个问题?

更新:在 gulp 之外使用“nodemon bin/www”时,一切正常

4

1 回答 1

0

如果有人遇到同样的问题,这似乎可以解决它:

.pipe(livereload({ auto: false }))

auto:false 选项可防止重新启动 livereload 服务器的另一个实例

于 2014-10-23T07:47:14.143 回答