Open helllamer opened 2 years ago
How does graal have require but not node’s other globals?
I'm not a specialist in js/require/webpack. Just trying to run webpack-bundled js-file for SSR via GraalVM polyglot All else dependencies (like react, etc) don't throw such exceptions.
GraalVM officially have several (or more?) options for JS execution:
gu install nodejs
https://www.graalvm.org/reference-manual/js/NodeJS/ (global
should be available here by default).Webpack 5 is broken, and doesn’t polyfill node globals by default. What you’ll want to do, instead of setting global to an empty object, is replace all instances of a global global
in the bundle with globalThis
(assuming graal supports that).
Thanks. I need some time to understand and apply your information to make further steps. This issue should be closed, by now?
We have to hack around this. Any update? Building web workers with Vite and global
is undefined.
@jbeuckm if vite won't polyfill it properly by default, then you'd have to either configure it to do so, or switch to a working bundler.
@chrisdickinson please fix?
Just a small feature request: Add support for undefined
global
namespace, if js-runtime environment is not a browser and not a nodejs.TL;DR
Workaround
Full GraalVM backtrace
Mostly useless.
EXPAND BACKTRACES
``` Exception in thread "ScalaGraal-pool-1-thread-1" japgolly.scalagraal.ExprError$EvalError: ReferenceError: global is not defined at japgolly.scalagraal.ExprError$InEval$.unapply(ExprError.scala:23) at japgolly.scalagraal.Expr$.$anonfun$apply$2(Expr.scala:168) at japgolly.scalagraal.Expr.$anonfun$$greater$greater$1(Expr.scala:144) at japgolly.scalagraal.Expr.evalOrThrow(Expr.scala:25) at japgolly.scalagraal.GraalContext$Builder.evalOrThrow$1(GraalContext.scala:131) at japgolly.scalagraal.GraalContext$Builder.$anonfun$build$3(GraalContext.scala:134) at japgolly.scalagraal.GraalContext$Builder.$anonfun$build$3$adapted(GraalContext.scala:134) at scala.Option.foreach(Option.scala:437) at japgolly.scalagraal.GraalContext$Builder.build(GraalContext.scala:134) at japgolly.scalagraal.GraalContextPool$Builder$Fixed$Step2A.$anonfun$build$1(GraalContextPool.scala:84) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) at japgolly.scalagraal.GraalContextPool$Builder$Fixed$Step2B.$anonfun$build$2(GraalContextPool.scala:96) at japgolly.scalagraal.GraalContextPool$DefaultContextThread$$anon$2.run(GraalContextPool.scala:164) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.graalvm.polyglot.PolyglotException: ReferenceError: global is not defined at