blocklet exec 命令是一個強大的工具,用於在已安裝的 Blocklet 的即時上下文中執行腳本。這對於資料庫遷移、資料填充或任何需要存取您 Blocklet 執行階段環境變數的一次性腳本來說,都是非常有價值的。
它確保您的腳本與正在執行的應用程式使用相同的設定和密鑰,使管理和偵錯任務更加簡單可靠。
運作方式
當您執行 blocklet exec 時,CLI 會連接到您正在執行的 Blocklet Server,擷取指定 Blocklet 實例的環境變數,然後在一個注入了這些變數的新行程中執行您的腳本。這讓您的腳本能夠連接到與您的 Blocklet 相同的資料庫、服務和 API。

用法
要執行腳本,您必須提供腳本的路徑和目標 Blocklet 實例的 DID。
命令語法
blocklet exec <path-to-script> [options]先決條件
Blocklet Server 必須正在執行
該命令需要與伺服器通訊以擷取環境。如果它沒有執行,請使用
blocklet server start啟動它。Blocklet 必須已安裝
由
--app-id識別的 Blocklet 必須已經安裝在伺服器上。
參數與選項
- path-to-script
string(required) — 您要執行的 Node.js 腳本的相對路徑。 - --app-id
string(required) — 腳本應在哪個 Blocklet 實例中執行的 DID。如果未提供,CLI 將尋找 BLOCKLET_DEV_APP_DID 環境變數。 - --timeout
number(default:1800) — 腳本的最長執行時間,以秒為單位。預設為 30 分鐘(1800 秒)。
範例
假設您有一個腳本來檢查您正在執行的 Blocklet 的一些關鍵環境變數。
首先,建立腳本檔案:
scripts/check-env.js
// 此腳本將在 Blocklet 的上下文中執行
// 並且可以存取其所有環境變數。
console.log('--- 在 Blocklet 上下文中執行腳本 ---');
const appName = process.env.BLOCKLET_APP_NAME;
const appPort = process.env.BLOCKLET_PORT;
if (appName && appPort) {
console.log(`成功存取環境變數:`);
console.log(`- Blocklet 名稱: ${appName}`);
console.log(`- Blocklet 連接埠: ${appPort}`);
} else {
console.error('無法存取 Blocklet 環境變數。');
process.exit(1);
}
console.log('--- 腳本執行完畢 ---');
process.exit(0);現在,使用 blocklet exec 命令執行腳本。請務必將 z2qa... 替換為您實際的 Blocklet 實例 DID。
執行腳本
blocklet exec scripts/check-env.js --app-id z2qaR7iY52Nv9m36m883s9yqjM3aW5tV6c7g8您應該會看到類似這樣的輸出,確認腳本已存取 Blocklet 的環境:
預期輸出
info 嘗試為 blocklet(z2qaR7iY52Nv9m36m883s9yqjM3aW5tV6c7g8) 執行腳本 (timeout: 1800000ms)
--- 在 Blocklet 上下文中執行腳本 ---
成功存取環境變數:
- Blocklet 名稱: My Awesome App
- Blocklet 連接埠: 3030
--- 腳本執行完畢 ---
success 完成!執行元件的腳本
如果您目前的工作目錄包含一個屬於較大 Blocklet 的元件的 blocklet.yml 檔案,blocklet exec 將會智慧地偵測到這一點。它會自動在該元件特定的環境上下文中執行腳本,該上下文包含來自父 Blocklet 和元件本身的變數。
常見用例
資料庫遷移
在類生產環境中執行腳本來更新您的資料庫結構或應用遷移。
資料填充
使用可以存取資料庫連線詳細資訊的腳本,為您的資料庫填充初始或測試資料。
管理任務
執行一次性的管理任務,例如重設使用者密碼或清理舊記錄。
偵錯
執行偵錯腳本以檢查正在執行的 Blocklet 的狀態或環境,而無需停止它。