如何使用GraalVM创建Node.js本机映像

Vad*_*imo 3 javascript node.js graalvm

我试图从一个简单的node.js example.js应用程序创建本机映像。

使用以下命令运行应用程序时:

 node --native -i --native example.js
Run Code Online (Sandbox Code Playgroud)

然后该应用程序将启动并按预期运行。

现在,我想创建一个本地图像。我尝试了以下命令:

 native-image --language:js example.js
Run Code Online (Sandbox Code Playgroud)

但是由于错误,它不起作用:

Build on Server(pid: 77626, port: 64052)
[example.js:77626]    classlist:   3,964.04 ms
error: Main entry point class 'example.js' not found.
Error: Processing image build request failed
Run Code Online (Sandbox Code Playgroud)

作为解决方案,我在以下位置创建了一个主入口点example.js

function main(args) {
  console.log("Main app started")
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用。

通常有没有办法为js / node.js应用程序创建本机映像?

Ole*_*jev 7

否。目前,截至2018年12月,无法为node.js应用程序创建GraalVM本机映像。本机映像实用程序采用Java字节码并提前进行编译。GraalVM JavaScript引擎是Java程序,可以编译为本地映像。这是您执行时实际运行的内容$GRAALVM_HOME/bin/js。它仍然在运行时加载JavaScript,对其进行解释并及时将其编译为机器代码。

GraalVM的节点实现是一个普通node的本地应用程序,而JavaScript引擎已替换为GraalVM的JavaScript引擎。

GraalVM团队正在尝试一些可能的方法来保存JavaScript程序的预编译部分,例如标准库或应用程序的部分,但是何时可以使用以及不清楚哪种形式。