Javascript 从Typescript中的http url导入ES6模块
我正在编写一个ES6模块,它依赖于使用http url指定的其他ES6模块,如下所示:Javascript 从Typescript中的http url导入ES6模块,javascript,typescript,Javascript,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中翻译模块时,出现以下错误: 找不到模块“”或其相应的类型声明 我正在使用ts w
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中翻译模块时,出现以下错误:
找不到模块“”或其相应的类型声明
我正在使用ts watch
npm模块编译Typescript,除非我不使用import
fromhttps://...
我还知道,如果我尝试导入npm模块(例如,从“redom”导入{el}),它也可以工作。但我写的是一个web浏览器模块,而不是npm模块。基于这个原因,使用
webpack
不是一个选项。感谢@acrazing的评论,我成功地解决了这个问题。以下是方法:
在新的ts文件中:
declare module 'https://*'
declare module 'https://cdnjs.cloudflare.com/ajax/libs/redom/3.26.0/redom.es.js' {
export * from 'redom'
}
这将使Typescript编译器尝试读取类型声明的错误静音
如果要作为节点依赖项访问类型声明,请将其粘贴到新的ts文件中:
declare module 'https://*'
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\u modules
目录中读取类型声明,VSCode也会识别类型。这是否回答了您的问题?和我的案子很接近。但我想在代码中使用ES6导入,这会导致Typescript的编译错误。有没有办法让这个错误静音?如果你只是想让typescript错误静音,你可以试试这个:这就是我想要做的!非常感谢。直到我将它与我的其余文件一起放入src
文件夹,而不是单独的顶级types
文件夹中,它才对我起到任何作用。老实说,我还不确定这有什么关系,可能是一些深奥的tsc解决方案。因此,对于我来说,/src/types/redom.d.ts
而不是/types/redom.d.ts
,看起来我的问题实际上是忘记设置ts编译器选项“moduleResolution”:“node”
。