Error minifing 'stomp.umd.js' when creating application .jar (bootJar)
Closed this issue ยท 6 comments
How to reproduce
- Forge a grails app (with suggested defaults): https://start.grails.org/
- Add the dependency:
implementation 'io.github.zyro23:grails-spring-websocket:2.6.0-RC1'
- Execute
bootJar
Results
We get the following exception:
Closure uglify JS Exception
java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.
null
Node(OPTCHAIN_CALL): spring-websocket.unminified.js:502:12
origOnClose?.call(webSocket, {
Parent(EXPR_RESULT): spring-websocket.unminified.js:502:12
origOnClose?.call(webSocket, {
at com.google.common.base.Preconditions.checkState(Preconditions.java:492)
at com.google.javascript.jscomp.InlineFunctions$CallVisitor.visit(InlineFunctions.java:425)
at com.google.javascript.jscomp.InlineFunctions$FindCandidatesReferences.visit(InlineFunctions.java:494)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:909)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:902)
at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:948)
at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:854)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:880)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:902)
at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:948)
at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:854)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:880)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:902)
at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:948)
at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:854)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:880)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.handleScript(NodeTraversal.java:842)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:877)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:415)
at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:425)
at com.google.javascript.jscomp.InlineFunctions.process(InlineFunctions.java:124)
at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:317)
at com.google.javascript.jscomp.PhaseOptimizer$Loop.process(PhaseOptimizer.java:462)
at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:232)
at com.google.javascript.jscomp.Compiler.performOptimizations(Compiler.java:2438)
at com.google.javascript.jscomp.Compiler.lambda$stage2Passes$1(Compiler.java:808)
at com.google.javascript.jscomp.CompilerExecutor.lambda$runInCompilerThread$0(CompilerExecutor.java:101)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException
... 47 more
May be worth providing the minified js instead of the unminified one?
It looks like is a Google Closure Compiler issue, the following configuration works (the only drawback is that the size of JS files is less optimized):
assets {
minifyCss = true
minifyJs = true
minifyOptions = [
//SIMPLE (default) or ADVANCED or WHITESPACE_ONLY
optimizationLevel: 'WHITESPACE_ONLY',
]
}
i do not think this is a problem with stomp.js
nor with closure-compiler
but with asset-pipeline-gradle
that pulls an old closure compiler version. ref: https://github.com/bertramdev/asset-pipeline/blob/rel-4.4.0/asset-pipeline-gradle/build.gradle#L41
i was able to reproduce the problem locally and for me, overriding the dependency version in build.gradle
in the buildSrc
directory worked:
// buildSrc/build.gradle
// ...
dependencies {
// ...
implementation("com.google.javascript:closure-compiler-unshaded:v20240317")
// ...
}
would u mind giving that a try?
and if that works, i think we could piggyback onto bertramdev/asset-pipeline#326 asking for an update to v20240317
?
Okay, I tested it, it worked, thank you!
nice. thanks. then i guess the stomp.js issue you created can be closed?
i will amend the readme with this workaround until there is an asset-pipeline update available.
id prefer to keep this issue open until an asset-pipeline update is available and the workaround is no longer necessary.
but stomp-js/stompjs#634 can be closed?
thank you.
Yes, I've closed it