首页 > 解决方案 > 如何使用 GraalVM 创建 node.js 原生镜像

问题描述

我正在尝试从一个简单的 node.jsexample.js应用程序创建本机图像。

运行应用程序时:

 node --native -i --native example.js

然后应用程序正在启动并按预期工作。

现在我想创建一个原生图像。我尝试了以下命令:

 native-image --language:js example.js

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

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

作为一项解决方案,我创建了一个主要入口点,example.js例如:

function main(args) {
  console.log("Main app started")
}

但是这不起作用。

有没有一种方法通常为 js/node.js 应用程序创建原生图像?

标签: javascriptnode.jsgraalvm

解决方案


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

GraalVM 的节点实现是一个普通node的原生应用程序,JavaScript 引擎被 GraalVM 的引擎取代。

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


推荐阅读