обозначает сбой пакета. Свойство getIterator не существует для типа ReadableStream <R>
Выполнение Nom с пакетом завершается ошибкой со следующей ошибкой:
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
Пожалуйста, дайте мне знать.
2 ответа
Что вызвало эту ошибку для меня:
Я не уверен, есть ли одна истинная причина для этой проблемы, но в моем случае я получил эту ошибку при попытке импортировать пакет UUID "v4" из библиотеки Deno std lib, и я сделал это с зависимостью, которая разрешилась транзитивно (в два или более шагов). В моем случае я решил, что в моем проекте нужно повторно экспортировать все зависимости в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();
Я не сталкивался с этой проблемой с другими модулями std, и, что любопытно, эта методология разрешения модулей, похоже, не работает, даже если модули из deps.ts
перезагружены с deno cache --reload deps.ts
- они все еще не разрешаются с указанной выше ошибкой. Поэтому я не уверен, связана ли эта проблема с пакетом UUID v4 или может возникнуть с другими модулями.
Если у кого-то есть дополнительная информация о том, почему эта стратегия импорта выдает такую запутанную ошибку, я бы хотел ее услышать. (Я предполагаю, что это ошибка в реализации Deno.bundle?) На данный момент этот обходной путь кажется достаточно разумным.
Примечание не по теме для OP: вы включили библиотеки "dom" и "identify.ns" в свой tsconfig.json, поэтому в документации вы также должны указать целевой уровень JS, например, "es2018" (см.: "Дон" не забудьте включить библиотеку JavaScript ")
Это решение работает для меня, объявите getIterator как глобальный интерфейс.
declare global {
interface ReadableStream<R> {
getIterator(): any
}
}