Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Execute Trireme with NPM dependencies in Jar-File #206

Open
hmlimkokhoe opened this issue Apr 17, 2022 · 0 comments
Open

Execute Trireme with NPM dependencies in Jar-File #206

hmlimkokhoe opened this issue Apr 17, 2022 · 0 comments

Comments

@hmlimkokhoe
Copy link

Hello,

we have a Java Maven project that loads the Node module ECharts to output charts. It works locally with this NodeScript instantiation:
NodeScript echartsScript = env.createScript("index.js", new File("src/main/resources/echarts/src/index.js"), params);

Our Node project contains a package.json with ECharts as dependency. Both the script and node files are located here: src/main/resources/echarts. After building the project with Maven, the dependency is moved to the root of the project like this: my-jar-file.jar/echarts.

Inside our JavaScript, we simply use var echarts = require("echarts") to import ECharts.

Problem

Now, we want to achieve the same thing, when executing our Jar file. As Maven is able to resolve files under the resources directory itself, we replaced our file path with this:
NodeScript echartsScript = env.createScript("index.js", new File("/echarts/src/index.js"), params);

I you run java -jar target/trireme-java-1.0-SNAPSHOT-jar-with-dependencies.jar com.mycompany.app.App with the JavaScript import mentioned above, you'll get the error message as below.

Trireme can load ECharts flawlessly if using an absolute path var echarts = require("/home/lim/Projects/trireme-java/src/main/resources/echarts/node_modules/echarts"); for the import. But obviously this is not the correct way... What would you suggest us to fix this problem?

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Launching ECharts on port 8080
Exception in thread "main" java.util.concurrent.ExecutionException: org.mozilla.javascript.JavaScriptException: Error: Cannot find module '/echarts/src/index.js' (module.js#340)
Caused by: org.mozilla.javascript.JavaScriptException: Error: Cannot find module '/echarts/src/index.js' (module.js#340)
        at io.apigee.trireme.node10.node.module._c_anonymous_15(module.js:340)
        at io.apigee.trireme.node10.node.module.call(module.js)
        at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
        at io.apigee.trireme.node10.node.module._c_anonymous_14(module.js:280)
        at io.apigee.trireme.node10.node.module.call(module.js)
        at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
        at io.apigee.trireme.node10.node.module._c_anonymous_26(module.js:497)
        at io.apigee.trireme.node10.node.module.call(module.js)
        at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:85)
        at io.apigee.trireme.node10.main.trireme._c_startup_2(trireme.js:142)
        at io.apigee.trireme.node10.main.trireme.call(trireme.js)
        at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:74)
        at io.apigee.trireme.node10.main.trireme._c_anonymous_1(trireme.js:923)
        at io.apigee.trireme.node10.main.trireme.call(trireme.js)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:405)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3508)
        at io.apigee.trireme.node10.main.trireme.call(trireme.js)
        at io.apigee.trireme.core.internal.ScriptRunner.runScript(ScriptRunner.java:762)
        at io.apigee.trireme.core.internal.ScriptRunner$4.run(ScriptRunner.java:702)
        at org.mozilla.javascript.Context.call(Context.java:544)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:515)
        at io.apigee.trireme.core.internal.ScriptRunner.call(ScriptRunner.java:697)
        at io.apigee.trireme.core.ScriptFuture.run(ScriptFuture.java:183)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant