nodejs在脚本结束时崩溃

时间:2017-08-24 02:51:22

标签: node.js

我在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窗口)之后它出错了

2 个答案:

答案 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