用途:在 Elixir 应用中求值 JavaScript/TypeScript、加载 ES 模块、从 CDN/npm/jsr 导入依赖、跨语言调用函数,并把完整 Deno 程序作为 OTP 监督的子进程运行。
主要能力:两种模式——进程内 V8 求值(Denox.eval、Denox.call 等)与子进程运行器(Denox.Run,双向 stdio)。提供 sync/async 求值、TypeScript 转译(仅转译不做类型检查)、ES 模块加载、import map、CDN 动态导入、JS→Elixir 回调、V8 快照加速冷启动、Denox.Pool 运行时池,以及 Denox.Deps/Denox.Npm 依赖管理与 npm 预打包。
使用方式:在 mix.exs 添加 {:denox, "~> 0.4.0"},预编译 NIF 覆盖 macOS 与 Linux(x86_64、aarch64);本地构建需 Rust stable,首次编译约 20-30 分钟(从源码构建 V8),可用 DENOX_BUILD=true mix compile 强制本地构建。可选 JSON 模块配置 config :denox, :json_module, Jason。同步用 eval/call,涉及 await、Promise、动态 import()、setTimeout 等需用 eval_async/call_async 并用 return 取回结果;并发负载用 Denox.Pool。提供 mix denox.install/add/remove/bundle/run 任务。
适用场景:在 Elixir 中嵌入 JS/TS 逻辑、调用远程 ES 模块、集成 MCP 服务器或 Deno CLI 工具。
限制:V8 isolate 单线程,一个 runtime 同一时刻只处理一次求值;eval_ts 不做类型检查;沙箱需显式 sandbox: true 禁用 fs/net;CDN 导入建议设置 cache_dir。资料未提供收费、价格或性能基准等信息。