更多背景知识:我构建了一个 Tauri 应用程序,仅使用 Vanilla Javascript/HTML/CSS 和通常的 Rust 后端。我想包含一个 NPM 包以使我的生活更轻松,但我不知道如何将其集成到我的应用程序中。我读过一些关于“sidecar”的内容,但说实话,Tauri 网站上的文章很难理解。想知道 SO 的任何好心人是否可以为我指出文章或视频的正确方向,甚至是如何工作的代码示例。
谢谢!
到目前为止,我已经尝试过,
npm i serialport
(顺便说一句,这就是我尝试使用的 npm 包)并使用命名导入和默认导入来导入包。我认为这是因为 Tauri 本身并没有像 Web 框架那样融入 Node.js 环境。由于性能和包大小差异,我将此应用程序从 Electron 迁移到 Tauri。
只有浏览器 NPM 包可以与 Tauri 一起使用。没有带有 Tauri 应用程序的 Node 运行时来运行依赖项,因此诸如串行端口交互之类的东西都需要是 Rust 库。
您可以使用的唯一 NPM 包用于 Tauri 应用程序的 UI 端,这也意味着它们在浏览器沙箱内运行,因此它们无法对 Web API 之外的系统资源进行本机访问。
这里正确的方法是使用 Rust 库来实现此目的,然后注册调用该代码的 Tauri 处理程序。然后可以使用Events从前端调用它们。也许 serialport-rs 适合您的目的?
理论上,您可以拥有一个 Rust 代码调用的单独 Node 应用程序,但这不符合 Tauri 的精神,也没有按照应有的方式拥抱它。
虽然我同意已接受的答案,但只要您只需要客户端/前端功能,只需将 npm 安装的文件夹复制到您的公共文件夹 (src) 中,就可以加载大多数 npm 库因为该库相当独立,并且在其内部引用中不使用绝对路径。 即使如此 - 我猜开源之美 - 您可以继续复制依赖项并自己更新路径。 然后,您可以根据复制的位置链接该文件/引用该模块。