Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Typescript中的http url导入ES6模块_Javascript_Typescript - Fatal编程技术网

Javascript 从Typescript中的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

我正在编写一个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 watch
npm模块编译Typescript,除非我不使用
import
from
https://...


我还知道,如果我尝试导入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”