2017-10-17 132 views
1

我已经创建了一个nodejs应用程序。它在我的package.json文件中有jdbc依赖项。我发现如果目标机器没有安装jre,我的应用程序无法启动。由于jdbc只是我应用程序中的可选功能,因此我想知道是否有方法让我的应用程序在没有安装jre的环境中运行。nodejs是否支持运行时依赖?

理想情况下,我想要实现这样的逻辑:

1,检测在目标计算机是否安装有jre与否

2,如果已安装,启用此功能

3,如果不,禁用此功能

所以我需要一个运行时依赖nodejs为了支持这个要求。

+0

'require'只是普通的JavaScript代码,所以你可以在它周围尝试{...} catch(err){...}。 – tadman

+0

@tadman这并没有真正解决核心问题,即在安装Java时应该激活它。 –

+0

很多时候,拥有某种设置系统会比仅仅因为安装它而自动检测和使用它更好。如果作为用户我不希望Java涉及您的应用程序,我只是为了其他原因安装了它? – tadman

回答

3

你的问题有两个部分:

  1. 可以检测机器是否已经安装了Java?
    是的 - 你可以使用代码如this这将执行一个shell命令来确定是否安装JRE,并可能验证版本。

  2. 您可以在运行时选择性地包含依赖项吗?
    同样是 - 你可以只使用一个if语句,如:

    var jbdc; if(java_installed){ jbdc = require('jbdc'); }

这是说,如果你是从jbdc越来越在安装时的错误,你仍然要手动有如果支持Java,则选择安装jbdc。为此,请将jbdc添加到您的package.json,作为optional dependency