我在JVM內部運行來自Java的帶有https://github.com/apigee/trireme的Node JS。我有一個目錄,看起來如下:節點JS Trireme包含模塊
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中找到該文件。 我不知道節點JS,所以我不熟悉模塊加載。我已經嘗試設置NODE_PATH,只拿到
Error: Cannot find module 'request'
好像我無法從三列槳座戰船的NODE_PATH,如果我將其覆蓋,三列槳座戰船無法運行。我對如何獲得在Trimere中加載的Node JS模塊沒有想法。任何幫助讚賞。
編輯:我將require改爲('./somemodule/index.js'),它工作。所以設置NODE_PATH也會完成這項工作。我剛剛發現錯誤來自缺失的依賴關係。
"dependencies": {
"request": "^2.49.0",
"tough-cookie": "^0.12.1"
},
我想出了對付它正在安裝節點JS + NPM,並調用NPM在節點/文件夾中安裝some_module的最佳途徑。它會自動將some_module及其所有依賴項下載到我的節點/文件夾中。 不再需要錯誤。
編輯實際上回答你的問題,不是嗎? :P –
@ E_net4是的,它的確如下:D你會推薦創建一個答案還是隻是讓問題保持原樣? – Zackline
不要**留下問題,因爲它是。將答案部分移至您自己的答案。 –