【问题标题】:nodemon is not restarting the server when using node-java package使用 node-java 包时 nodemon 没有重新启动服务器
【发布时间】:2015-12-22 00:33:16
【问题描述】:

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

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

alon

甚至会抛出以下内容:

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)

由于端口 4000 在服务器中仅使用一次,而在其他任何地方都没有使用,所以它的行为很奇怪。

【问题讨论】:

  • 我使用node-java 模块创建了示例服务器,并且服务器在文件更改时成功重新启动。您是否创建了包含配置的自定义 nodemon.json 文件?
  • @ezrepotein 在使用 java.import 时观察到此问题。 (如下) var java = require('java'); var preview = java.import('com.previewer.Previewer');
  • 在 nodemon repo 中发现了类似的问题,github.com/remy/nodemon/issues/573 似乎还没有 cmets。
  • 导入类后我遇到了同样的问题。也许可以试试 dannyn-mirth 在 github 问题上建议的主管。

标签: node.js express nodemon node-java


【解决方案1】:

您可以尝试运行此命令。

nodemon --signal SIGINT ./index.js

【讨论】:

    【解决方案2】:

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

    (快速)修复:

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

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

    请注意,您必须在node-java(或使用它的东西,在我的情况下是node-tika)完成其“工作”之后(在我的情况下,在需要node-tika 之后立即执行此操作)。

    老实说,我对这为什么有效,我只了解很少,如果有人能对此有所了解,我会很高兴。

    【讨论】:

    • 在向通过 nodemon 运行的 ts-node 应用程序发送 sigint (ctrl-c) 时会发生类似的事情。要在这种情况下正确终止应用程序,请侦听 SIGINT 信号,然后发送 SIGKILL 信号。
    猜你喜欢
    • 2014-05-27
    • 2016-10-04
    • 2020-07-11
    • 2020-03-24
    • 2016-05-14
    • 2020-06-23
    • 2018-01-05
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多