在某些情况下,您可能希望加载位于私有存储库(如GitHub上的私有存储库)中的远程模块。
DENO支持在请求远程模块时发送承载令牌。承载令牌是OAuth 2.0使用的主要访问令牌类型,并得到托管服务(例如GitHub、GitLab、BitBucket、Cloudsmith等)的广泛支持。
DENO_AUTH_TOKENS
Deno CLI将查找名为DENO_AUTH_TOKENS的环境变量,以确定在请求远程模块时应考虑使用哪些身份验证令牌。环境变量的值采用由分号(;)分隔的n个令牌的格式,其中每个令牌的格式为{Token}@{hostname[:port]}。
例如,单个令牌看起来是这样的:
DENO_AUTH_TOKENS=a1b2c3d4e5f6@deno.land
多个令牌看起来是这样的:
DENO_AUTH_TOKENS=a1b2c3d4e5f6@deno.land;f1e2d3c4b5a6@example.com:8080
当Deno去获取远程模块,其中主机名与远程模块的主机名匹配时,Deno会将请求的Authorization头设置为Beader{Token}的值。这允许远程服务器识别该请求是绑定到特定认证用户的授权请求,并提供对服务器上适当资源和模块的访问。
AuthorizationBearer {token}
GitHub
为了能够访问GitHub上的私有存储库,您需要为自己颁发个人访问令牌。您可以登录GitHub,然后进入设置->开发人员设置->个人访问令牌:
![](https://img.haomeiwen.com/i22408736/920ad1c4d7679a78.png)
然后,您可以选择生成新令牌,并为您的令牌提供描述和适当的访问权限:
![](https://img.haomeiwen.com/i22408736/39b60ac0522bc6e3.png)
一旦创建,GitHub将一次性显示新令牌,您希望在环境变量中使用该令牌的值:
![](https://img.haomeiwen.com/i22408736/7e5e8dfe23f2ba29.png)
为了访问GitHub上的私有存储库中包含的模块,您可能希望使用DENO_AUTH_TOKENS环境变量中生成的令牌,该环境变量的作用域为raw.githubusercontent.com主机名。例如:DENO_AUTH_TOKENS``raw.githubusercontent.com
DENO_AUTH_TOKENS=a1b2c3d4e5f6@raw.githubusercontent.com
这应该允许Deno访问令牌所针对的用户有权访问的任何模块。
当令牌不正确或用户无权访问模块时,GitHub将发出404未找到状态,而不是未授权状态。因此,如果在命令行中找不到您试图访问的模块,请检查环境变量设置和个人访问令牌设置。
此外,还应打印出有关从环境变量解析出的令牌数量的调试消息。如果它感觉到任何令牌格式不正确,它将打印一条错误消息。出于安全考虑,它不会打印有关令牌的任何详细信息。deno run-L debug
网友评论