爱学习的好孩子

Deno如何访问私有模块

时间: 2024-06-01

在某些情况下,您可能希望加载位于私有仓库中的模块。

Deno支持在请求远程模块时发送承载令牌。持票人令牌是OAuth 2.0使用的主要访问令牌类型, 托管服务广泛支持(例如GitHubGitlabBitBucketCloudsmith等)。

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并访问 在SettingsDeveloper SettingsPersonal 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应该打印出有关从环境变量中解析出的标记数。如果任何令牌的格式不正确,则显示错误消息。它不会打印任何有关令牌的详细信息,以确保安全。

评论