简体   繁体   English

使用 node-java 包时,nodemon 不会重新启动服务器

[英]nodemon is not restarting the server when using node-java package

When using node-java package, nodemon doesn't restart when the files change.使用node-java包时,文件更改时nodemon 不会重新启动 If I remove node-java package then nodemon will restart when there are file changes.如果我删除 node-java包,那么nodemon 将在文件更改时重新启动

Even the manual restart (rs) is not working when using node-java package in server.在服务器中使用 node-java 包时,即使手动重启(rs)也不起作用。 Following is the behavior.以下是行为。

nodemon 使用 node-java 时的行为 alon阿隆

And even it throws the following:甚至它抛出以下内容:

 events.js:85 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at exports._errnoException (util.js:746:11) at Server._listen2 (net.js:1156:14) at listen (net.js:1182:10) at Server.listen (net.js:1267:5)

Since the port 4000 is being used only once in server and no where else, its behaving weird.由于端口 4000 在服务器中仅使用一次而在其他任何地方都没有使用,因此它的行为很奇怪。

It seems that node-java somehow magically 'overrides' what's happening when receiving SIGUSR2 signal.似乎 node-java 以某种方式神奇地“覆盖”了接收SIGUSR2信号时发生的事情。 In such a case, the SIGUSR2 signal (used by nodemon ) to restart the app may fail terminating the app.在这种情况下,用于重新启动应用程序的SIGUSR2信号(由nodemon )可能无法终止应用程序。

(Quick) Fix: (快速解决:

after the node-java has screwed your SIGUSR2 handling mechanism, add the following snippet of code:在 node-java 搞砸了您的SIGUSR2处理机制后,添加以下代码片段:

process.once('SIGUSR2', function() {
  process.kill(process.pid, 'SIGUSR2')
})

note that you must do this AFTER the node-java (or something which uses it, in my case it is node-tika ) does its 'job' (in my case, immediately after requiring node-tika ).请注意,您必须在node-java (或使用它的东西,在我的情况下是node-tika )完成它的“工作”(在我的情况下,在需要node-tika之后立即执行此操作)。

To be honest, I have only very little understanding, why this works and I'll be glad if someone can shed more light on this.老实说,我只有很少的理解,为什么这有效,如果有人能对此有更多的了解,我会很高兴。

您可以尝试运行此命令。

nodemon --signal SIGINT ./index.js

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM