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 下载它们,因为后者不下载任何依赖项。
我 运行宁 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 下载它们,因为后者不下载任何依赖项。