Tedious: `エラーTS2304:v6.6.1で名前'StringDecoder'.`が見つかりません

作成日 2019年11月27日  ·  8コメント  ·  ソース: tediousjs/tedious

プロジェクトをコンパイルすると、

../../node_modules/@types/readable-stream/index.d.ts:138:18 - error TS2304: Cannot find name 'StringDecoder'.

138         decoder: StringDecoder | null;
                     ~~~~~~~~~~~~~

ノード:10.16.0
タイプスクリプト:3.3.3333
退屈:6.6.1

面倒なバージョンを6.5.0に変更すると機能します。
これがhttps://github.com/tediousjs/tedious/issues/1007に関連しているかどうかわからない

誰かアドバイスしますか?

最も参考になるコメント

これに関する問題はすでに提起されていますhttps://github.com/DefinitelyTyped/DefinitelyTyped/pull/37869

修正は次のとおりです: @anthonylau@ obermobber 。 うまくいけば、これもあなたの問題を解決します!
image

全てのコメント8件

こんにちは@anthonylau 、プロジェクトをどのようにコンパイルしたか、または再現スクリプトを提供したかについて、詳細を教えてください。 私はあなたが提供するバージョンで退屈なプロジェクトをセットアップしました、そして退屈なプロジェクトはうまく構築されます。 また、3.3.3333が約9か月前にリリースされたので、新しいバージョンのTypescriptでプロジェクトを試してみませんか?

ねえ@MichaelSun90、@anthonylau抱えていたのと同じ問題があります。 また、面倒なv6.5.0に移行して修正しました。

スタートスクリプト( "start": "nodemon --exec ts-node -- ./src/index.ts" )を実行しても問題は発生しませんが、prodビルド( "tsc -p tsconfig.json" )を実行すると次のエラーが発生しました。

node_modules / @ types / reading-stream / index.d.ts:138:18-エラーTS2304:名前「StringDecoder」が見つかりません。

138デコーダー:StringDecoder | ヌル;
〜〜 ~~~

1つのエラーが見つかりました。

npm ERR! コードELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] build:prodtsc -p tsconfig.json
npm ERR! 終了ステータス2

と組み合わせて使用​​します
5.15.1を続編する
タイプスクリプト:3.3.4000
ノード:10.15.3

どのような追加情報が必要ですか?

追加情報:
index.d.tsに入ると、typescriptは次の問題情報を提供しています。
'StringDecoder' refers to a value, but is being used as a type here. (ts2749)

この問題がどこから来ているのか理解できません-https://github.com/DefinitelyTyped/DefinitelyTyped/blob/6a3064cc7408b4e71d0d0feb6f92457d4c22e15c/types/readable-stream/index.d.ts#L132に基づいて、への参照はありませんStringDecoderですが、 NodeStringDecoderです。

システム上のnode_modules/@types/readable-stream/index.d.tsファイルの内容を確認できますか?

はい、確認しました。ReadableStateインターフェイスは次のようになります。

interface ReadableState {
        objectMode: boolean;
        highWaterMark: number;
        buffer: BufferList<any>;
        length: number;
        pipes: any; // NodeJS.WritableStream | any[]; // TODO
        pipesCount: number;
        flowing: any;
        ended: boolean;
        endEmitted: boolean;
        reading: boolean;
        sync: boolean;
        needReadable: boolean;
        emittedReadable: boolean;
        readableListening: boolean;
        resumeScheduled: boolean;
        destroyed: boolean;
        awaitDrain: number;
        defaultEncoding: string;
        readingMore: boolean;
        decoder: StringDecoder | null;
        encoding: string | null;

        // new (options: ReadableStateOptions, stream: _Readable): ReadableState;
    }

これは、インストールした面倒な依存関係です。

"readable-stream": {
          "version": "3.4.0",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
          "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
          "requires": {
            "inherits": "^2.0.3",
            "string_decoder": "^1.1.1",
            "util-deprecate": "^1.0.1"
          }

image

したがって、読み取り可能ストリームv 2.3.6はStringDecoder #$ではなくNodeStringDecoderとマージされているように見えますが、まだ公開されていない可能性があります

image

image

これはおそらくDefinitelyTypedの問題です

これは、インストールした面倒な依存関係です。

間違った読み取り可能ストリームの依存関係を見ていると思います。 問題は@Types/ readable-dependencyにあり、2.3.5がインストールされている必要があります

image

これに関する問題はすでに提起されていますhttps://github.com/DefinitelyTyped/DefinitelyTyped/pull/37869

修正は次のとおりです: @anthonylau@ obermobber 。 うまくいけば、これもあなたの問題を解決します!
image

ええ、それを書くつもりでした!
@ types / node:12.12.17をインストールしましたが、prodビルドは正常に機能します。 ありがとう!!

このページは役に立ちましたか?
0 / 5 - 0 評価