我知道 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”时,一切正常