Oops! Forgot to provide a link to the example...
Here it is:
https://gist.github.com/purplefox/7804105
On 05/12/13 12:42, Tim Fox wrote:
Hello Nashorn folks,
I've been playing around with Nashorn today, and in particular I've
been trying to implement commonJS-like require() functionality, but
having some problems. Most probably I am doing something stupid...
I'm sure you all know, with commonJS modules you can "require" them
from your JS scripts, e.g.
var someObject = require("modulename");
Then in modulename.js
you do your stuff then export the object that ends up being returned
from the require, e.g.
var someObject = {
foo: "bar"
}
module.exports = someObject;
One key thing is that modules have their own scope, so any globals
defined in modulename.js shouldn't be visible in the script that
requires them, and vice versa.
While trying to implement this using Nashorn and running scripts in
different scopes I've found it's possible for Nashorn to get confused
about what scope it's using, and for scopes to leak from one to another.
I created this simple runnable example to demonstrate the issue.
I wonder if anyone can advise whether this is a bug, or perhaps I am
using the API incorrectly. If the latter, could you advise on the
proper way to use the API to implement this kind of functionality.
Many thanks