SuperAPI AI 工具集

running-nodejs-sidecar-in-tauri

编程与开发

查看项目

更新于 10-15 20:06

技能介绍

用途:在 Tauri v2 桌面应用中把 Node.js 程序作为 sidecar 子进程打包运行,从而复用 npm 生态、避免终端用户安装 Node.js,并把 Node.js 逻辑与主进程隔离,支持 Windows、macOS、Linux。

前提:已有 Tauri v2 应用、已安装并配置 Shell 插件、开发机有 Node.js/npm 与 Rust 工具链(建议 1.84.0+)。

主要步骤:安装 @tauri-apps/plugin-shell 与 tauri-plugin-shell,并在 lib.rs 注册插件;创建 sidecar 目录,用 @yao-pkg/pkg 将 index.js 打包为可执行文件;用 rename.js 依据 rustc --print host-tuple 得到的目标三元组重命名,放入 src-tauri/binaries;在 tauri.conf.json 的 bundle.externalBin 声明;在 capabilities/default.json 中配置 shell:allow-execute 权限,建议用 validator 限制参数而非 args: true。

调用方式:前端用 Command.sidecar 执行并读取 stdout/stderr,或用 command.on 与 stdout.on 做流式输出;Rust 端通过 ShellExt 的 sidecar 调用并注册命令。常驻进程可改为监听 127.0.0.1 的 HTTP 服务,前端用 fetch 通信并做健康检查与退出清理。

构建:在根 package.json 中先构建 sidecar 再执行 tauri dev/build;跨平台需匹配 pkg 目标与 Rust 三元组。

限制与安全:HTTP 服务仅绑定 127.0.0.1,两端都要校验输入,确保应用关闭时终止 sidecar;常见问题包括二进制未找到(三元组不匹配)、Unix 权限需 chmod +x、静默崩溃需查看 stderr。具体版本与平台细节以官方资料为准。