Open iskane opened 1 year ago
This should definitely be possible as currently the require function use vert.x file system to resolve resources. Because of this, we should see jar resources as if they were local file system files.
Can you share a dummy jar/zip with the right location of the module you're trying to load and the require statement so I can debug if there's a specific issue with the setup?
I also see from your slashes you're probably on Windows, while I think this isn't an issue anymore it could be that with all the windows fixes in the last iterations we may have missed some edge cases...
Here is an example created from Deven Phillips tutorials. https://github.com/iskane/es4x-example/blob/main/intro-to-vertx-master.zip
Configuration : graalvm-ce-java17-22.3.0 / es4x
"mvn clean compile vertx:run " and i have the following error:
Starting vert.x application...
[INFO] 10e265dd-ad24-48ba-a93d-12361380b92b-redeploy
[INFO] Failed in deploying verticle caused by ModuleError: Module "META-INF/resources/webjars/lodash/4.17.15/lodash.js" was not found
[INFO] at
Thank you.
Hello,
I managed to make it work in this example project with the javaScript files in the same jar we used in our production project. However, it does not work in our real project.
The only difference is that in the example we have one module and in the real project we have several modules and we import the module with the JS into another module.
It would be great to have documentation of how to migrate from Vertx 3 + vertx-lang-js to vertx 4 + es4X. When I look at the documentation that exists, I have the impression that ES4X is designed to create a separate npm project and in our case, we have JS verticals deployed from a java maven project.
Thank you.
We have a polyglot application with Vertx 3 and vertx-lang-js and we are migrating to Vertx 4 and ES4X. In lot of javaScripts we load other scripts that are in the classpath using require/load. for example: var myvar = require('com/xxxx/yyyy/common/scripts/lodash.js')
Using Java 11, GraalVM and the ES4X dependency in our maven project, we have the following error when we load a javaScript module in a jar in the class path:
"ModuleError: Module \"com/xxxx/yyyy/common/scripts/lodash.js\" was not found\r\n\tat Require.resolve(..\..\..\..\..\maven-local-repository\io\reactiverse\es4x\0.19.1\es4x-0.19.1.jar!\io\reactiverse\es4x\jvm-npm.js:122:3628-3706)
it’s possible with ES4X to resolve the class path and load a JavaScript file/module in a jar?
Thank you