我在ubuntu上运行节点,并且我一直收到"错误打开端口:8080 ...",EADDRINUSE错误。
我基本上理解问题是什么,但是当我搜索搜索解决方案时,我基本上会讨论杀死进程的最佳方法。另一件事是人们说你需要使用 ctrl + c 而不是 ctrl + z - 这是不是问题,因为我总是使用 ctrl + c ,即使nodemon重新启动服务器,我也会收到此错误。
这有真正的解决方案吗?每次必须杀死这个过程都是笨拙和丑陋的。另外,我必须每小时做20次。更糟糕的是,当我杀死这个过程时,这有时会杀死我的邮差。
那么,是否有 真正的 解决方案。按优先顺序排列:
有没有办法防止这种情况发生?为什么节点或nodemon不会终止它正在运行的进程?
有没有问题(在我的节点服务器中)告诉它在服务器崩溃/退出之前终止进程?
在开始侦听端口之前,有没有办法杀死我服务器中的现有进程?我不喜欢这个解决方案,但是每次用锤子敲击端口更好,所以我可以让它工作。
编辑:
这是错误:
error opening port: 8080
{ Error: listen EADDRINUSE :::8080
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1351:14)
at listenInCluster (net.js:1392:12)
at Server.listen (net.js:1476:7)
at Function.listen (/home/ksjazzguitar/Programming/test/jwt5/server/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/ksjazzguitar/Programming/test/jwt5/server/server.js:46:5)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 8080 }
答案 0 :(得分:0)
回答3和2
3)您可以使用此
终止该过程# where 8080 is your port
sudo kill <(sudo lsof | grep 'TCP \*:8080 (LISTEN)' | awk '{print $2}' | sort -u)
2)创建一个bash脚本,其中包含3)然后启动应用程序的命令,如
sudo kill <(sudo lsof | grep 'TCP \*:8080 (LISTEN)' | awk '{print $2}' | sort -u)
npm start
然后使用该脚本启动您的应用程序
答案 1 :(得分:0)
在我的一个Node服务器中,我添加了这个:
const processExitHandler = async (error) => {
await this.destroy();
if(error) console.log(error);
process.exit(error ? 1 : 0);
};
process.on('exit', processExitHandler);
process.on('SIGINT', processExitHandler); // Catches ctrl+c
process.on('SIGUSR1', processExitHandler); // SIGUSR1 and SIGUSR2 are for `kill pid` (ex: nodemon restart)
process.on('SIGUSR2', processExitHandler);
process.on('uncaughtException', processExitHandler);
this.destroy
停止了网络服务器和数据库连接。
这是我用于编译/重新启动更改的监视脚本:
"watch:build": "babel src --out-dir lib --source-maps --watch",
"watch:run": "nodemon lib/index.js",
"watch": "npm run watch:build & (sleep 1 && npm run watch:run)",
答案 2 :(得分:0)
我只是在我的pkg.json中添加了标记--delay 1500ms,它就可以了。
import pandas as pd
# TODO: Set weight1, weight2, and bias
weight1 = -2.5
weight2 = -1.5
bias = 1.0
# DON'T CHANGE ANYTHING BELOW
# Inputs and outputs
test_inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
correct_outputs = [True, False, True, False]
outputs = []
# Generate and check output
for test_input, correct_output in zip(test_inputs, correct_outputs):
linear_combination = weight1 * test_input[0] + weight2 * test_input[1] + bias
output = int(linear_combination >= 0)
is_correct_string = 'Yes' if output == correct_output else 'No'
outputs.append([test_input[0], test_input[1], linear_combination, output, is_correct_string])
# Print output
num_wrong = len([output[4] for output in outputs if output[4] == 'No'])
output_frame = pd.DataFrame(outputs, columns=['Input 1', ' Input 2', ' Linear Combination', ' Activation Output', ' Is Correct'])
if not num_wrong:
print('Nice! You got it all correct.\n')
else:
print('You got {} wrong. Keep trying!\n'.format(num_wrong))
print(output_frame.to_string(index=False))