【问题标题】:deno bundle failed. Property 'getIterator' does not exist on type 'ReadableStream<R>'deno 捆绑失败。类型“ReadableStream<R>”上不存在属性“getIterator”
【发布时间】:2020-12-02 14:29:41
【问题描述】:

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

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"
      }
    ]
  }
}

运行命令。

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

请告诉我。

【问题讨论】:

    标签: typescript deno


    【解决方案1】:

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

    我不确定这个问题是否有一个真正的原因,但在我的情况下,我在尝试从 Deno 标准库导入“v4”UUID 包时收到了这个错误,我这样做的依赖项是传递地解决(在两个或多个步骤中)。就我而言,我决定让我的项目重新导出项目根目录下 deps.ts 文件中的所有依赖项:

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

    ...然后,在一个发往客户端的脚本中,我通过相对路径导入了该模块并尝试使用它:

    // 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();
    

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

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

    OP 题外话:您已在 tsconfig.json 中包含库“dom”和“deno.ns”,因此根据the documentation,您还应该提供目标 JS 级别,例如“es2018”(请参阅​​:“不要忘记包含 JavaScript 库”)

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2020-08-26
      • 2020-11-11
      • 2021-12-15
      • 2012-12-25
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多