---
description: 受支持的平台包、原生加载错误和运行时要求。
---

# 原生目标

发布包会根据当前操作系统、架构和 Linux libc 加载一个 napi-rs 二进制。包内不提供 JavaScript
或 WASI 实现。

## 受支持目标

| Rust target                  | 平台包                        | 运行环境          |
| ---------------------------- | ----------------------------- | ----------------- |
| `aarch64-apple-darwin`       | `@amamo/mdx-darwin-arm64`     | macOS arm64       |
| `x86_64-apple-darwin`        | `@amamo/mdx-darwin-x64`       | macOS x64         |
| `aarch64-unknown-linux-gnu`  | `@amamo/mdx-linux-arm64-gnu`  | Linux arm64 glibc |
| `x86_64-unknown-linux-gnu`   | `@amamo/mdx-linux-x64-gnu`    | Linux x64 glibc   |
| `aarch64-unknown-linux-musl` | `@amamo/mdx-linux-arm64-musl` | Linux arm64 musl  |
| `x86_64-unknown-linux-musl`  | `@amamo/mdx-linux-x64-musl`   | Linux x64 musl    |
| `x86_64-pc-windows-msvc`     | `@amamo/mdx-win32-x64-msvc`   | Windows x64       |

## 绑定何时加载

`createCompiler()` 会归一化配置，也可能初始化 Shiki，但不会加载 Rust。匹配的原生二进制会在
第一次调用 `build()` 或 `transform()` 时延迟加载。平台包必须与根包版本完全相同。

| 顶层错误                   | 含义                                        |
| -------------------------- | ------------------------------------------- |
| `AMAMO_NATIVE_UNSUPPORTED` | OS 或 CPU 没有已知 target 映射。            |
| `AMAMO_NATIVE_UNAVAILABLE` | target 已知，但本地和平台包绑定都无法加载。 |

平台包版本不匹配时，`AMAMO_NATIVE_VERSION_MISMATCH` 位于 `AMAMO_NATIVE_UNAVAILABLE` 的
aggregate cause 中，不是顶层 loader 错误。

如果依赖是在另一台机器上安装的，请在当前目标重新安装。可以复用包管理器缓存，但不要复制
`node_modules`。

## Node.js 要求

根包和平台包要求使用 Node.js 20.19 或更新版本。

## Shiki 不能替代原生绑定

`highlight.engine` 只决定围栏代码块如何高亮。选择 `javascript` 不会为 MDX 编译提供
JavaScript 回退；应用仍然需要上表中匹配当前运行环境的平台包。高亮选项见
[配置参考](/zh-CN/configuration/)。
