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
}
}
运行 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
}
}