Deno如何访问私有模块
时间: 2024-06-01
在某些情况下,您可能希望加载位于私有仓库中的模块。
Deno
支持在请求远程模块时发送承载令牌。持票人令牌是OAuth 2.0
使用的主要访问令牌类型, 托管服务广泛支持(例如GitHub
,Gitlab
,BitBucket
, Cloudsmith
等)。
DENO_AUTH_TOKENS
Deno CLI将查找名为DENO_AUTH_TOKENS
的环境变量以确定在请求时应考虑使用哪些身份验证令牌远程模块。环境变量的值的格式为:
-
格式为
{token}@{hostname[:port]}
的承载令牌 -
基本认证数据,格式为
{username}:{password}@{hostname[:port]}
例如,一个令牌看起来像这样:
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
并访问 在Settings
→Developer Settings
→Personal access tokens
下的tokens
。
然后选择Generate new token
并为token
给予描述和适当的访问权限,
GitHub上私有存储库中的模块浅醉为raw.githubusercontent.com
。例如:https://raw.githubusercontent.com/用户名/仓库名/分支名/test.txt
。
DENO_AUTH_TOKENS=a1b2c3d4e5f6@raw.githubusercontent.com
当令牌不正确或用户没有访问模块的权限时, GitHub
将发布404 Not Found
状态,而不是未经授权
的状态。 因此,如果您收到的错误是您试图访问的模块没有,请检查环境变量设置和个人访问令牌设置。
此外,deno run -L debug
应该打印出有关从环境变量中解析出的标记数。如果任何令牌的格式不正确,则显示错误消息。它不会打印任何有关令牌的详细信息,以确保安全。