跳到主要內容

私人模組和儲存庫

在某些情況下,您可能想要載入位於私人儲存庫(例如 GitHub 上的私人儲存庫)中的遠端模組。

Deno 支援在請求遠端模組時傳送簡持代幣。簡持代幣是 OAuth 2.0 使用的主要存取代幣類型,並且廣泛受到代管服務(例如 GitHub、GitLab、Bitbucket、Cloudsmith 等)支援。

DENO_AUTH_TOKENS

Deno CLI 會尋找名為 DENO_AUTH_TOKENS 的環境變數,以判斷在要求遠端模組時應考慮使用哪些驗證權杖。環境變數的值格式為 n 個以分號 (;) 分隔的權杖,其中每個權杖為

  • {token}@{hostname[:port]} 格式的 Bearer 權杖或

  • {username}:{password}@{hostname[:port]} 格式的基本驗證資料

例如,deno.land 的單一權杖會類似這樣

DENO_AUTH_TOKENS=a1b2c3d4e5f6@deno.land

DENO_AUTH_TOKENS=username:password@deno.land

而多個權杖會類似這樣

DENO_AUTH_TOKENS=a1b2c3d4e5f6@deno.land;f1e2d3c4b5a6@example.com:8080;username:password@deno.land

當 Deno 準備擷取遠端模組,且主機名稱與遠端模組的主機名稱相符時,Deno 會將要求的 Authorization 標頭設定為 Bearer {token}Basic {base64EncodedData} 的值。這讓遠端伺服器能辨識要求是與特定已驗證使用者相關聯的授權要求,並提供存取伺服器上適當資源和模組的權限。

GitHub

若要存取 GitHub 上的私人儲存庫,您需要為自己核發一個個人存取權杖。您可透過登入 GitHub 並前往設定 -> 開發人員設定 -> 個人存取權杖來執行此動作

Personal access tokens settings on GitHub

接著,您會選擇產生新的權杖並為您的權杖提供描述和適當的存取權限

Creating a new personal access token on GitHub

建立後,GitHub 會一次性顯示新的權杖,您會想要在環境變數中使用其值

Display of newly created token on GitHub

若要存取包含在 GitHub 上私人儲存庫中的模組,您會想要在 DENO_AUTH_TOKENS 環境變數中使用已產生、適用於 raw.githubusercontent.com 主機名稱的權杖。例如

DENO_AUTH_TOKENS=a1b2c3d4e5f6@raw.githubusercontent.com

這應允許 Deno 存取使用者發出權杖所存取的任何模組。

當權杖不正確,或使用者無法存取模組時,GitHub 會發出 404 Not Found 狀態,而不是未授權狀態。因此,如果你在命令列上收到錯誤訊息,表示你嘗試存取的模組未找到,請檢查環境變數設定和個人存取權杖設定。

此外,deno run -L debug 應會印出有關從環境變數中分析出的權杖數量的偵錯訊息。如果它認為任何權杖格式錯誤,它會印出錯誤訊息。為了安全起見,它不會印出任何有關權杖的詳細資訊。