Node JS Trireme 包含模块

Node JS Trireme include module

我 运行宁 Node JS 与来自 Java 的 https://github.com/apigee/trireme,在 JVM 中。我有一个如下所示的目录:

node/
-test_file.js
-test_somemodule.js
-somemodule/
-somemodule/index.js
-somemodule/...

我没问题 运行使用此代码 test_file.js:

@Test
public void shouldRunTestScript() {
    try {
        NodeEnvironment env = new NodeEnvironment();
        // Pass in the script file name, a File pointing to the actual script, and an Object[] containg "argv"
        NodeScript script = env.createScript("my-test-script.js",
                new File(Settings.getInstance().getNodeDir() + "/my-test-script.js"), null);
        // Wait for the script to complete
        ScriptStatus status = script.execute().get();
        // Check the exit code
        assertTrue("Exit code was not 77.", status.getExitCode() == 77);
    } catch (NodeException | InterruptedException | ExecutionException ex) {
        Logger.getLogger(TriremeTest.class.getName()).log(Level.SEVERE, null, ex);
        fail("Trireme triggered an exception: " + ex.getMessage());
    }
}

在文件 test_somemodule.js 中,我包含了 index.js。

require('somemodule/index.js');

当我尝试 运行 那个文件时,它无法在 require.xml 中找到该文件。 我对Node JS一无所知,所以我不熟悉模块加载。我已经尝试设置 NODE_PATH,只得到

Error: Cannot find module 'request'

我好像无法从Trireme 获取NODE_PATH,如果我覆盖它,Trireme 将无法运行。我不知道如何在 Trimere 中加载 Node JS 模块。任何帮助表示赞赏。

编辑:我将要求更改为 ('./somemodule/index.js'),效果很好。所以设置 NODE_PATH 也可以完成这项工作。我刚刚发现错误来自缺少的依赖项。

  "dependencies": {
"request": "^2.49.0",
"tough-cookie": "^0.12.1"
 },

我发现最好的处理方法是安装 Node JS + npm,然后在 node/ 文件夹中调用 npm install some_module。它会自动将 some_module 及其所有依赖项下载到我的节点/文件夹中。 不再需要错误。

我没有指定文件在工作目录中。

require('./somemodule/index.js');

而不是

require('somemodule/index.js');

完成任务。另一种可能性是将 NODE_PATH 环境变量设置为节点/文件夹,这样你就可以在没有 ./.

的情况下要求

我还发现获取模块的最佳方法是使用 npm 安装它们,而不是从 git 下载它们,因为后者不下载任何依赖项。