Possible scope leak in Nashorn
Tim Fox
timvolpe at gmail.com
Thu Dec 5 04:42:04 PST 2013
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
More information about the nashorn-dev
mailing list