javascript - 如何使用 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 应用程序创建原生图像?
解决方案
不可以。目前,截至 2018 年 12 月,无法为 node.js 应用程序创建 GraalVM 原生镜像。本机映像实用程序采用 Java 字节码并提前对其进行编译。GraalVM JavaScript 引擎是一个 Java 程序,可以编译为原生镜像。这是您在执行时实际运行的内容$GRAALVM_HOME/bin/js
。它仍然在运行时加载 JavaScript,对其进行解释并将其即时编译为机器代码。
GraalVM 的节点实现是一个普通node
的原生应用程序,JavaScript 引擎被 GraalVM 的引擎取代。
GraalVM 团队正在试验一些可能的方法来保存 JavaScript 程序的预编译部分,可能是标准库,或者你的应用程序的一部分,但何时可用以及以何种形式尚不清楚。
推荐阅读
- reactjs - React useEffect卸载清理问题
- reactjs - 无法在创建反应应用程序中安装 TailwindCSS
- python - 如何使用 Python 和 Selenium 添加 localStorage
- rust - 因借款无法搬出
- python - 我想将外键模型用作 Django 表单中的表单
- kotlin - 盒装可空整数的奇怪行为
- android - 如何在xamarin android中更改水平文本视图滚动方向
- python - 编译 libvirt 时出现“ImportError: cannot import name 'metadata'”
- javascript - WebView 重定向停止工作,logcat 中没有错误
- ios - 在 UICollectionView 中执行 UITextView 键入时防止滚动位置重置