我在nodejs中遇到了一个非常奇怪的崩溃,错误是
Error: listen EADDRINUSE :::3000
at Object.exports._errnoException (util.js:1020:11)
at exports._exceptionWithHostPort (util.js:1043:20)
at Server._listen2 (net.js:1258:14)
at listen (net.js:1294:10)
at Server.listen (net.js:1390:5)
at Object.<anonymous> (C:\Users\tyler\Desktop\workspace\stream pop-up\index.js:18:6)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
我的代码是
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require("fs");
var port = process.env.PORT || 3000;
app.get('/', function(req, res){
res.sendFile(__dirname + '/popup.html');
});
fs.watchFile("assets/popup.json", {interval:100}, function(curr, prev)
{
console.log("working")//dosen't go here
fs.readFile("assets/popup.json",{encoding:"utf8"}, function(err, data){
io.emit("popup", data)
})
});
http.listen(port, function()
{
console.log("working")//doesn't go here
console.log('listening on *:' + port);
});
console.log("working") //this one prints
完全相同的代码在以前工作,唯一的区别是我将此文件与node_modues一起放在子文件夹中,然后将它们从该子文件夹中取出,因为我得到了相同的错误。我不知道为什么会发生这种情况,任何帮助都会受到赞赏
编辑:我现在知道问题是端口正在使用,但我不知道为什么。我尝试使用python脚本subprocess.Popen t调用这个脚本,但是在下一行代码运行(创建tkinter窗口)之后它出错了
答案 0 :(得分:1)
端口3000已在使用中,您可以尝试将端口3000更改为其他端口或终止在端口3000中运行的实例。
在mac和linux上
killall node
在Windows上
taskkill /f /im node.exe
答案 1 :(得分:0)
您的端口3000已在使用中。尝试更改端口3000或终止在此端口中运行的脚本。 如果您使用的是Linux或Unix,请尝试运行此命令以验证端口是否正在使用:
sudo lsof -i -P -n | grep LISTEN
或者在Windows中:
netstat -a -b