обозначает сбой пакета. Свойство 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
  }
}
Другие вопросы по тегам