跳到主要內容
Tauri

Node.js 作為 sidecar

在本指南中,我們將封裝 Node.js 應用程式為獨立的二進制檔案,以便在 Tauri 應用程式中作為 sidecar 使用,而無需終端使用者安裝 Node.js。本範例教學僅適用於桌面作業系統。

我們建議先閱讀sidecar 指南,以更深入了解 Tauri sidecar 的運作方式。

在本範例中,我們將建立一個 Node.js 應用程式,該應用程式從命令列 process.argv 讀取輸入,並使用 console.log 將輸出寫入 stdout。
您可以利用其他跨進程通訊系統,例如 localhost 伺服器、stdin/stdout 或本機 sockets。請注意,每種系統都有其自身的優點、缺點和安全考量。

先決條件

一個已存在的 Tauri 應用程式,已設定 shell 外掛程式,並且可以在本機編譯和執行。

指南

  1. 讓我們建立一個新的 Node.js 專案來包含我們的 sidecar 實作。**在您的 Tauri 應用程式根資料夾**中建立一個新目錄(在本範例中,我們將其命名為 sidecar-app),並在目錄內執行您偏好的 Node.js 套件管理器的 init 命令

    npm init

    我們將使用 pkg 將 Node.js 應用程式編譯為獨立的二進制檔案。讓我們將其安裝為開發依賴項

    npm add @yao-pkg/pkg --save-dev
  2. 撰寫 Sidecar 邏輯

    現在我們可以開始撰寫 JavaScript 程式碼,這些程式碼將由我們的 Tauri 應用程式執行。

    在本範例中,我們將處理來自命令列參數的命令,並將輸出寫入 stdout,這表示我們的程序將是短暫的,並且一次只處理一個命令。如果您的應用程式必須長時間執行,請考慮使用其他跨進程通訊系統。

    讓我們在 sidecar-app 目錄中建立一個 index.js 檔案,並撰寫一個基本的 Node.js 應用程式

    sidecar-app/index.js
    const command = process.argv[2];
    switch (command) {
    case 'ping':
    const message = process.argv[3];
    console.log(`pong, ${message}`);
    break;
    default:
    console.error(`unknown command ${command}`);
    process.exit(1);
    }
  3. 為了將我們的 Node.js 應用程式封裝為獨立的二進制檔案,我們可以執行以下 pkg 命令

    npm run pkg -- --output app

    這將在 Linux 和 macOS 上建立 sidecar-app/app 二進制檔案,並在 Windows 上建立 sidecar-app/app.exe 可執行檔。為了將此檔案重新命名為預期的 Tauri sidecar 檔案名稱,我們可以使用以下 Node.js 腳本

    import { execSync } from 'child_process';
    import fs from 'fs';
    const ext = process.platform === 'win32' ? '.exe' : '';
    const rustInfo = execSync('rustc -vV');
    const targetTriple = /host: (\S+)/g.exec(rustInfo)[1];
    if (!targetTriple) {
    console.error('Failed to determine platform target triple');
    }
    fs.renameSync(
    `app${ext}`,
    `../src-tauri/binaries/app-${targetTriple}${ext}`
    );
  4. 在 Tauri 應用程式中設定 Sidecar

    現在我們已經準備好 Node.js 應用程式,我們可以透過設定 bundle > externalBin 陣列,將其連接到我們的 Tauri 應用程式

    src-tauri/tauri.conf.json
    {
    "bundle": {
    "externalBin": ["binaries/app"]
    }
    }

    只要 sidecar 二進制檔案存在於 src-tauri/binaries/app-<target-triple>,Tauri CLI 就會處理 sidecar 二進制檔案的捆綁。

  5. 我們可以從 Rust 程式碼或直接從 JavaScript 執行 sidecar 二進制檔案。

    讓我們直接在 Node.js sidecar 中執行 ping 命令

    import { Command } from '@tauri-apps/plugin-shell';
    const message = 'Tauri';
    const command = Command.sidecar('binaries/app', ['ping', message]);
    const output = await command.execute();
    const response = output.stdout;

© 2025 Tauri 貢獻者。CC-BY / MIT