Javascript 是否可以从github版本导入deno中的模块?

Javascript 是否可以从github版本导入deno中的模块?,javascript,github,deno,Javascript,Github,Deno,我想从deno中的github导入一个模块,该模块仅在github发行版中可用,并且不是存储库中代码的一部分 我想导入:https://github.com/zingi/random-lon-lat-generator/releases/download/v0.1.0/random_lon_lat_generator.js 我试过: import*as wasm from'https://github.com/zingi/random-lon-lat-generator/releases/dow

我想从deno中的github导入一个模块,该模块仅在github发行版中可用,并且不是存储库中代码的一部分

我想导入:
https://github.com/zingi/random-lon-lat-generator/releases/download/v0.1.0/random_lon_lat_generator.js

我试过:

import*as wasm from'https://github.com/zingi/random-lon-lat-generator/releases/download/v0.1.0/random_lon_lat_generator.js'
这就产生了这个错误:

Download https://github.com/zingi/random-lon-lat-generator/releases/download/v0.1.0/random_lon_lat_generator.js
Download https://github-releases.githubusercontent.com/352299341/6ca4b280-9638-11eb-9f4a-c7b6b890c5e9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210405%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210405T161838Z&X-Amz-Expires=300&X-Amz-Signature=82fbc720c3a05232836678385da43cecd2a9d29ca959f736e5e8a47ce62b23bf&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=352299341&response-content-disposition=attachment%3B%20filename%3Drandom_lon_lat_generator.js&response-content-type=application%2Foctet-stream
error: An unsupported media type was attempted to be imported as a module.
  Specifier: https://github-releases.githubusercontent.com/352299341/6ca4b280-9638-11eb-9f4a-c7b6b890c5e9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210405%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210405T161838Z&X-Amz-Expires=300&X-Amz-Signature=82fbc720c3a05232836678385da43cecd2a9d29ca959f736e5e8a47ce62b23bf&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=352299341&response-content-disposition=attachment%3B%20filename%3Drandom_lon_lat_generator.js&response-content-type=application%2Foctet-stream
  MediaType: Unknown
我知道如果模块是git中跟踪文件的一部分,我可以使用
raw.githubusercontent.com

但是因为模块还包含编译过的WebAssembly,所以我不想用git跟踪它

如果这是不可能的,你有任何其他建议如何使这项工作



编辑:错误消息似乎与此相同。但问题的来源是不同的,不能从那里得到公认的答案来解决。github发行版中的资产似乎没有永久链接,就像git中带有
raw.githubusercontent.com
的跟踪文件一样。github发布页面上提供的文件链接似乎转发(
302
)到一个生成的、在有限时间内可用的url,如:
github releases.githubusercontent.com/…
。因此,了解是否有可能获得指向github资产的永久“原始”链接是很有意思的。

github发行版下载URL实际上重定向到一个S3预签名URL,该URL本身使用
应用程序/octet流
内容类型头发回响应,无论内容是什么。因为deno不知道该内容类型,所以您会看到该错误消息

但是,您可以通过
raw.githubusercontent.com
CDN直接从与发布相对应的git标记导入。例如,可以使用以下命令从std库导入:

从导入{serve}”https://raw.githubusercontent.com/denoland/deno_std/0.92.0/http/server.ts";
如果它是无法通过GitHub的原始用户内容CDN访问的构建工件,那么您可以将其推送到外部数据存储,如GCS或S3。它们都可以通过URL公开,然后您可以从那里导入

一些模块注册中心还允许您拥有构建步骤,例如,提供该选项。然后,您可以将其挂接到与发布工作流相同的CI工作流中



但是对于您的具体案例,我可以从回购协议中看出,您正在构建wasm模块;您还可以包含一个TypeScript或JavaScript文件,作为wasm模块的入口点。例如,标准库中就是这样做的。

它的原因是,它的
应用程序/xml
不是JavaScript,还要注意
MediaType:Unknown
当我请求它时,它给了我http 403错误。从
服务器请求:AmazonS3
,错误:
AccessDenied
请求已过期300 2021-04-05T16:23:38Z 2021-04-05T21:03:05Z CJBY8NSXG35xJJJD XT38SVXHRD6ZKG7Vx0TT1GIKPA6ayvaqeCQEFS4AUPQYZBIEF03ZBMO0WZH2Q4RB5E9GEMWPY+g=
@Nur您可能试图从重定向的url下载,该url似乎是自动生成的url,只能在有限的时间内使用。如果您使用
https://github.com/zingi/random-lon-lat-generator/releases/download/v0.1.0/random_lon_lat_generator.js
您不应该出现403错误。这是否回答了您的问题@zingi似乎没有其他方法可以从GitHub获取发布资产的内容类型,如
text/plain
application/javascript
。但是有一个解决方法,您可以创建一个小型服务器,在该服务器上下载资产并返回正确/所需的内容类型。您还可以从GitHub版本下载单个文件。参见我的参考回购:一个文件:
https://github.com/zingi/random-lon-lat-generator/releases/download/v0.1.0/random_lon_lat_generator.js
一个文件和zip文件似乎都是302。但是,zip url似乎重定向到一个更永久的url:
https://github.com/zingi/random-lon-lat-generator/archive/refs/tags/v0.1.0.zip
=>
https://codeload.github.com/zingi/random-lon-lat-generator/zip/refs/tags/v0.1.0
关于
raw.githubusercontent.com
:我已经提到了3次,模块代码还不是git代码的一部分,因此不可用。我刚刚检查过,与发布相关的zip存档似乎只包含当时git跟踪代码的快照。因此它不包含模块代码,而模块代码只在发行版资产中可用。@zingi是的,我重新编写了第一个pragraph,使其更清晰,还包含了一些可能会帮助您解决问题的选项