繁体   English   中英

从Typescript http url导入ES6模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM