deno 捆绑失败。 属性 'getIterator' 在类型 'ReadableStream<R>' 上不存在

deno bundle failed. Property 'getIterator' does not exist on type 'ReadableStream<R>'

运行 deno with bundle 失败并出现以下错误:

error: TS2339 [ERROR]: Property 'getIterator' does not exist on type 'ReadableStream<R>'.
  return res.readable.getIterator();
                      ~~~~~~~~~~~
    at https://deno.land/std@0.63.0/async/pool.ts:45:23

tsconfig

{
  "compilerOptions": {
    "lib": [
      "deno.ns",
      "dom",
      "dom.iterable"
     ],
    "plugins": [
      {
        "name": "typescript-deno-plugin"
      }
    ]
  }
}

运行 commnad.

$ deno bundle -c tsconfig.json app.ts app.js

请告诉我。

是什么给我带来了这个错误:

我不确定这个问题是否有一个真正的原因,但就我而言,我在尝试从 Deno std lib 导入“v4”UUID 包时收到此错误,我这样做是用一个传递解决的依赖关系(分两步或更多步)。就我而言,我决定让我的项目 re-export 项目根目录下 deps.ts 文件中的所有依赖项:

[...]
// provide UUID from std lib
export {
    v4
} from "https://deno.land/std@0.63.0/uuid/mod.ts";
[...]

...然后,在用于 client-side 的脚本中,我通过相对路径导入了该模块并尝试使用它:

// this fails to compile with OP's error
import { v4 } from "../deps.ts";

[...]

const myNewUUID = v4.generate();

我的解决方法:

让消费模块在没有间接引用的情况下导入外部模块(通过 URL):

// this seems to compile and work OK
import { v4 } from "https://deno.land/std@0.63.0/uuid/mod.ts";

[...]

const myNewUUID = v4.generate();

我没有遇到其他标准模块的这个问题,奇怪的是,即使使用 deno cache --reload deps.ts 重新加载来自 deps.ts 的模块,这种模块解析方法似乎也失败了 - 它们仍然失败解决上述错误。所以我不确定这个问题是否与 v4 UUID 包有关,或者是否可能发生在其他模块上。

如果有人有关于 为什么 此导入策略会引发如此复杂的错误的任何其他信息,我很想听听。 (我的猜测是 Deno.bundle 实现中的一个错误?)目前,这个解决方法似乎足够合理。

Off-topic OP 注释:您在 [=42= 中包含了库“dom”和“deno.ns” ],所以根据 the documentation 你还应该提供目标 JS 级别,例如“es2018”(参见:“不要忘记包含 JavaScript 库”)

这个解决方案对我有用,将 getIterator 声明为全局接口。

declare global {
  interface ReadableStream<R> {
    getIterator(): any
  }
}