使用node-java软件包时,nodemon没有重新启动服务器

Som*_*Som 2 node.js express nodemon node-java

使用node-java包时,nodemon在文件更改时不会重新启动.如果我删除node-java包,那么当文件发生更改时,nodemon将重新启动.

在服务器中使用node-java包时,即使手动重启(rs)也不起作用.以下是行为.

nodemon使用node-java时的行为 阿龙

甚至它抛出以下内容:

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)
Run Code Online (Sandbox Code Playgroud)

由于端口4000仅在服务器中使用一次而在其他地方不使用,因此其行为很奇怪.

Tom*_*ich 5

似乎node-java以某种方式神奇地"覆盖"接收SIGUSR2信号时发生的事情.在这种情况下,重启应用程序的SIGUSR2信号(用于nodemon)可能无法终止应用程序.

(快速解决:

在node-java搞砸了你的SIGUSR2处理机制之后,添加以下代码片段:

process.once('SIGUSR2', function() {
  process.kill(process.pid, 'SIGUSR2')
})
Run Code Online (Sandbox Code Playgroud)

请注意,你必须这样做node-java(或者使用它的东西,在我的情况下是这样node-tika)做它的'工作'(在我的情况下,在要求后立即node-tika).

说实话,我只有很少的理解,为什么这样有效,如果有人能够对此有所了解,我会很高兴.