[英]Import ES6 module from http url in Typescript
我正在编写一个 ES6 模块,它依赖于 http url 指定的其他 ES6 模块,如下所示:
import { el, mount } from "https://cdnjs.cloudflare.com/ajax/libs/redom/3.26.0/redom.es.js";
const pElem = el("p") // definitely works in Javascript
当我试图在 Typescript 中翻译我的模块时,我得到了这个错误:
找不到模块“https://cdnjs.cloudflare.com/ajax/libs/redom/3.26.0/redom.es.js”或其相应的类型声明。
我正在使用ts-watch
npm 模块编译 Typescript,它工作正常,除非我不使用来自https://...
的import
。
我也知道如果我尝试导入 npm 模块(例如import {el} from "redom"
)它也能正常工作。 但我正在写的是 web 浏览器的模块,而不是 npm 的模块。因此,使用webpack
不是一个选项。
感谢@acrazing 的评论,我设法解决了这个问题。 就是这样:
在一个新的 ts 文件中:
declare module 'https://*'
这消除了 Typescript 编译器尝试读取类型声明的错误。
如果要将类型声明作为节点依赖项访问,请将其粘贴到新的 ts 文件中:
declare module 'https://cdnjs.cloudflare.com/ajax/libs/redom/3.26.0/redom.es.js' {
export * from 'redom'
}
并在 package.json 中添加redom
依赖项
"dependencies": {
"redom": "3.26.0",
...
},
然后,从本地./node_modules
目录中读取类型声明,VSCode 也可以识别类型。
declare module 'https://*'
不知何故对我不起作用,所以我只是忽略它。
// @ts-ignore Import module
import { Foo } from "https://example.com/foo.ts";
// Now you can use Foo (considered any)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.