当前位置: 首页 > 面试题库 >

从代码级别重启node.js应用

卓新知
2023-03-14
问题内容

我有一个最初创建static配置文件的应用程序(一次),写入文件后,我需要重新初始化/重新启动应用程序。是否可以从自身重新启动 node.js
应用程序?

这是必需的,因为我runlevelsnode.js
中有两个应用程序在运行。初始启动完全完成,synchronus并且在完成此级别后,应用程序在先前启动的环境中处于异步运行级别。

我知道有诸如nodemon之类的工具,但这并不是我需要的。

我试图杀死process.kill()正在运行的应用程序,但是我听不到kill事件:

 // Add the listener
 process.on('exit', function(code) {
    console.log('About to exit with code:', code);
    // Start app again but how?
 });

 // Kill application
 process.kill();

还是有更好,更清洁的方式来处理此问题?


问题答案:

找到了一个可以node.js从应用本身重新启动的工作案例:

例:

// Optional part (if there's an running webserver which blocks a port required for next startup
try {
  APP.webserver.close(); // Express.js instance
  APP.logger("Webserver was halted", 'success');
} catch (e) {
  APP.logger("Cant't stop webserver:", 'error'); // No server started
  APP.logger(e, 'error');
}


// First I create an exec command which is executed before current process is killed
var cmd = "node " + APP.config.settings.ROOT_DIR + 'app.js';

// Then I look if there's already something ele killing the process  
if (APP.killed === undefined) {
  APP.killed = true;

  // Then I excute the command and kill the app if starting was successful
  var exec = require('child_process').exec;
  exec(cmd, function () {
    APP.logger('APPLICATION RESTARTED', 'success');
    process.kill();
  });
}

我在这里看到的唯一缺点是在控制台上松开了输出,但是如果将任何内容记录到日志文件中,这不是问题。



 类似资料:
  • 问题内容: 我正在编写一个使用node.js访问本地文件系统的桌面Web应用程序。我目前可以使用node.js打开文件并将其复制到硬盘驱动器上的不同位置。我还想做的是允许用户使用与文件类型关联的应用程序打开特定文件。换句话说,如果用户在Windows环境中选择“ myfile.doc”,它将使用该文件启动MSWord。 我一定是术语的受害者,因为除了与node.js进行通信的子进程的生成之外,我什

  • 有人能给这点启示吗?

  • 问题内容: 我正在使用c ++为node.js编写附加组件。 这里有一些片段: 我需要将一个JavaScript函数另存为回调,以便稍后调用。Client类是另一个对象的观察者,应从onAsyncMethodEnds调用javascript回调。不幸的是,当我调用函数“ BeInitiator”时,在回调Call()之前收到“ Bus error:10”错误 感谢建议 问题答案: 您不能从另一个线

  • 问题内容: 我想在下一个项目中使用node.js,但老板不喜欢我们的竞争对手可以读取源代码。 有没有办法保护JavaScript代码? 问题答案: 您可以使用NativeExtension for node完成此操作 您将拥有一个为.jse文件添加扩展处理程序的文件 将是源代码的加密版本(用于解密的密钥不会在纯文本中的任何地方,因为解密过程是在本机扩展中进行的)。 现在,您可以使用NativeEx