问题标签 [graaljs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
762 浏览

java - 你可以远程调试在 Graal JVM 中运行的 Graal.js 脚本吗?

我在 Graal JVM (graalvm-ce-java8-19.3.0) 上运行 Java 程序,在该程序中我通过 Graal.js 引擎运行 JS 脚本。我想为那个 JS 脚本(不是 Java 程序)配置远程调试连接。我已经发现Graal通过 Chrome DevTools 协议/标准支持这种调试。

文档解释了如何使用独立的 Graal.js 解释器,但它也说你可以在 JVM 中使用相同的选项,方法是在它们前面加上-Dpolyglot.

因此,--inspect您不需要使用-Dpolyglot.inspect

这非常适合本地调试 - 一切都如这里这里所述。

现在我尝试通过设置将其用于远程调试,-Dpolyglot.inspect=exampleHost:9229其中 exampleHost 解析为我的外部 ip。不幸的是,这个设置会阻止 Graal.js 引擎正确初始化。没有太多关于真正错误的迹象,只有 stderr 上的这个消息:

这是否意味着不支持远程配置?这里有什么问题?

0 投票
1 回答
2772 浏览

java - Graal.js 导入模块导致 org.graalvm.polyglot.PolyglotException: SyntaxError: Expected an operand but found import

我正在尝试使用 Grall.js 的实验性 ES 模块支持。我使用以下脚本: ES 模块“lib”

和主脚本“脚本”

我使用 graalvm-ce-19.2.1 并通过JSR 223在 JVM 中使用 Polyglot来运行主脚本。它不会尝试从磁盘上的某个位置加载 lib,而是抛出:

怎么了?

0 投票
1 回答
147 浏览

graalvm - 使用 Graal 时如何配置 js 节点堆栈大小?

当我尝试在 js 中使用深度递归函数时遇到问题,我得到异常(RangeError:超出最大调用堆栈大小)。这个功能完美的工作了 Graal。只有在调用 polyglot 时才会复制它Context.execute()。第一次调用完成无异常但其他抛出。我使用 docker 和 graaljdk 图像oracle/graalvm-ce:20.0.0-java11并为所有线程使用一个引擎并为每个线程创建上下文。我可以通过 graal 选项或其他方式增加节点堆栈大小吗?

0 投票
1 回答
174 浏览

javascript - 我应该如何从正确编码的 GraalJS 脚本引擎获取脚本输出?

我们通过执行动态生成的 JavaScript 代码在 Scala 程序中处理 JSON。当使用包含的 Nashorn 脚本引擎时,这在 Java 8 中运行良好。

我们现在已经切换到 Java 13。不再包含 Nashorn,因此我们包含了 GraalJS。它工作正常,除了在输出中处理错误的国际字符。看起来输出被转换为 UTF-8 两次。

这是一个显示问题的简短示例:

结果是:Test ᅢᆬᅢ내ᄊ !

我做错了吗,或者这是 GraalJSScriptEngine 中的错误?我找不到任何文件。

注意:我已经通过使用我自己的存储原始字节的 StringWriter 暂时解决了这个问题,然后将它们作为 UTF-8 再次读取,但感觉不像这样做的方法......

0 投票
2 回答
632 浏览

graalvm - GraalJs - 调用 java 对象的构造函数

我想使用 graal js 为我的应用程序提供一些脚本扩展

如何在 javascript 端初始化一个新的 java 对象?

以下代码抛出异常

运行 graalvm-ce-java11 19.3.2

0 投票
1 回答
149 浏览

graalvm - 节点调用 Java 多语言应用程序所需的 Graal VM 组件

我计划将 GraalVM合并两个(一个使用 Node 的服务和另一个基于 Java 的服务),其中 Node 作为调用 Java 中的类/结构的主要入口点语言。我正在阅读有关 GraalVM 的信息,但无法清楚地找到以下信息。如果有人可以帮助我,那就太好了(或者指出我是否遗漏/忽略了某些东西)

  1. 上述用例所需的最低 GraalVM 组件是什么?我知道 Graal VM 有核心和可选组件。我们是否需要整个 GraalVM,包括此用例的热点 VM,或者仅以下组件就足够了?(请添加/更正我缺少一些组件)我更喜欢使用 OpenJDK8 作为我的 JVM

    • GraalJS
    • GraalSDK
    • 松露

    纠正我如果我错了——我对提出上述组件的理解是——GraalJS 包含通过松露实现的节点/js 运行时并支持多语言,并且具有包含多语言 api 的节点模块。GraalSDK - 包含 Java 的多语言 API。Truffle 具有将 JS 转换为在 JVM 上运行的字节码的逻辑

  2. 是否有关于每个模块如何协同工作的明确文档? 我正在寻找一个小/抽象图/流程图,它告诉 GraalJS 、 GraalSDK 和 Truffle 以及底层 JVM 如何协同工作以实现多语言。这有助于进一步了解和确定我的用例需要哪些组件

谢谢

0 投票
2 回答
144 浏览

javascript - 使用 Symbol.iterator 访问 ProxyObject 的迭代器

我创建了一个实现 Graal ProxyObject 接口的 Java 类。hasMember(String key)我可以通过和方法访问该类的所有方法和属性getMember(String key)。但是如果我使用类似的东西

我得到一个例外:

问题是 myObject[Symbol.iterator] 返回未定义。如何通过 Symbol 访问我的代理对象的成员...?

0 投票
2 回答
613 浏览

java - GraalJSEngineFactory 无法实例化

我是格拉尔的新手。我指的是这个文件。我正在使用 JDK 11。

下面是我试图运行的代码:

正在使用的罐子:

在尝试执行上面的代码时,我遇到了以下错误:

ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory 无法实例化

我尝试使用以下 VM 选项运行代码:

它仍然没有解决问题。

0 投票
1 回答
479 浏览

javascript - Graaljs 脚本引擎评估 java 脚本字符串条件

我正在使用 jdk11,graal.js 脚本引擎。

我们得到两个 json 字符串消息,一个有规则/条件(jsRules),另一个有消息。如果 message 中的值满足 jsRules 中的条件,则它应该评估为 1 else 0 。

因此,例如在下面的代码中,字符串“消息”code: CU_USER因此具有 jsRules 条件

应该已经满足,因此下面的 eval 应该打印 1 ,但它给出了 0。请解释导致这种行为的原因以及如何获得所需的行为?.

0 投票
0 回答
196 浏览

javascript - Stencil.js:组件级服务器端渲染

模板文档提出了一种在页面级别上工作的服务器端渲染方法。它创建了一个完整的 hydra 应用程序,其中包含在单个 index.js 文件中创建的所有组件,该文件使用整个 HTML 源页面作为输入。

有没有办法逐个组件地对 Web 组件进行服务器端渲染?我需要携带的基本思想是通过 graaljs 在 Java 后端执行 SSR。上面的加载时间非常长,初始油漆需要 30 秒,进一步加载需要 8-9 秒。输入页面可以复杂到 150kB。