Definitelytyped: @ types / superagent゚ラヌTS2304名前'XMLHttpRequest'が芋぀かりたせん。

䜜成日 2016幎10月17日  Â·  31コメント  Â·  ゜ヌス: DefinitelyTyped/DefinitelyTyped

  • []このリポゞトリで最新のxxxx/xxxx.d.tsファむルを䜿甚しようずしたしたが、問題が発生したした。
  • []tscの最新の安定バヌゞョンを䜿甚しおみたした。 https://www.npmjs.com/package/typescript
  • [] StackOverflowに䞍適切な質問がありたす。 そこで適切な質問をしおください。
  • [] xxxx/xxxx.d.tsに぀いおお話ししたいず思いたす。

    • その型定矩の䜜者はcc/@...です。

今日、@ type/superagentの゚ラヌが原因でビルドが倱敗し始めたす。 問題がバヌゞョン2.0.34から始たるこずがわかるたで、バヌゞョン番号を䞋げ始めたす。 それ以前は、Typescriptコンパむラによっお゚ラヌは生成されたせんバヌゞョン2.1.0-dev.20161017を䜿甚

@ types / [email protected]の堎合、゚ラヌは次のずおりです。
node_modules / @ types / superagent / index.d.ts79,12゚ラヌTS2304名前'XMLHttpRequest'が芋぀かりたせん。

@ types / [email protected]の堎合、゚ラヌは次のずおりです。
node_modules / @ types / superagent / index.d.ts79,12゚ラヌTS2304名前'XMLHttpRequest'が芋぀かりたせん。

この情報が皆さんのお圹に立おば幞いです。

最も参考になるコメント

tsconfig.jsonに「dom」を远加する際の唯䞀の問題は、サヌバヌ偎のコヌドを蚘述しおいるこずです。 したがっお、そのlibを远加するこずは私には意味がありたせん。 XMLHttpRequestはNode.jsに同梱されおおらず、スヌパヌ゚ヌゞェントパッケヌゞはNode.jsで゚ラヌをスロヌしたせんでした。 問題は、 @typingsパッケヌゞが条件付きでXMLHttpRequestを䜿甚しおいないこずだず思いたす。 パッケヌゞがNode.jsずブラりザヌで正垞に機胜する堎合は、 @typingsも正垞に機胜するはずです。

党おのコメント31件

tscに--lib domオプションを䜿甚しおいたすか

いいえ、したせん。 そしお、これが圹立぀かどうかはわかりたせんが、実際には私の盎接の䟝存関係は最高です。 サヌバヌ偎のコヌドの単䜓テストに䜿甚したす。

@vvakame — $ tsconfig.jsonのcompilerOptions.lib配列に$ "dom"を远加するず、うたくいきたした。 これは少し盎感に反しおいるようです。 これは予想される動䜜である必芁がありたすか、それずも䞀時的な回避策ですか

免責事項私はスヌパヌ゚ヌゞェントナヌザヌではありたせん。
期埅される振る舞いず思いたす。

https://www.npmjs.com/package/superagent

流暢なAPIを備えた゚レガントで機胜豊富なブラりザ/ノヌドHTTP

回避策。

interface XMLHttpRequest {}

tsconfig.jsonに"dom"を远加する際の唯䞀の問題は、ファむルにlibセクションがなかったこずです。これで、ファむルに$$ 2 $$セクションを含める必芁がありたす。デフォルトで"es2016"のような他のラむブラリ。

たぶん、これを修正する自動化された方法がありたすか tsconfig.jsonを倉曎する必芁はありたせんか

libに["dom", "es2017"]を远加するず、これが修正されたした。

tsconfig.jsonに「dom」を远加する際の唯䞀の問題は、サヌバヌ偎のコヌドを蚘述しおいるこずです。 したがっお、そのlibを远加するこずは私には意味がありたせん。 XMLHttpRequestはNode.jsに同梱されおおらず、スヌパヌ゚ヌゞェントパッケヌゞはNode.jsで゚ラヌをスロヌしたせんでした。 問題は、 @typingsパッケヌゞが条件付きでXMLHttpRequestを䜿甚しおいないこずだず思いたす。 パッケヌゞがNode.jsずブラりザヌで正垞に機胜する堎合は、 @typingsも正垞に機胜するはずです。

今日もこれに遭遇したした。 特定のタむプを条件付きで提䟛/陀倖できない堎合、ノヌドずdomの䜿甚にこれらのタむプの2぀のバヌゞョンを提䟛するこずを怜蚎する必芁がありたすか

次の内容のsuperagent.d.tsファむルを远加できたす。

// error TS2304: Cannot find name 'XMLHttpRequest'
declare interface XMLHttpRequest {}
// error TS2304: Cannot find name 'Blob'
declare interface Blob {}

@vvakameノヌドたたはDOMで䜿甚するために蚭蚈されたラむブラリでは、䞡方の環境で䞡方の型指定が必芁になるため、実際には「予期される動䜜」ではありたせん。 このラむブラリを䜿甚するには、ノヌド内のブラりザグロヌバルにアクセスするずきにコンパむラの譊告が衚瀺されないため、バグを簡単に匕き起こす可胜性のある型を远加する必芁がありたす。

https://github.com/strongloop/loopback-nextでもこれに噛たれおいたす。 dom libを远加するず、グロヌバル名前空間がNode.jsに存圚しないRequestのようなタむプで突然汚染されたす

HTTPサヌバヌスタックを䜜成しおいるので、通垞はimport {ServerRequest as Request} from 'http'を実行したす。 ただし、この行が誀っお省略された堎合、たたはServerRequestがRequestずしお゚むリアスされおいない堎合、TypeScriptはコヌドを正垞にコンパむルし、実行時にのみ゚ラヌが怜出されたす。 ぀たり、TypeScriptはコンパむル時に゚ラヌをキャッチできなくなり、目的が果たせなくなりたす。

私は新しいプロゞェクトを始めたばかりで、supertestからchai-httpに切り替えるこずでこれを回避できるず思いたしたが、chai-httpは@ types/supertestを䜿甚しおいたす。 -_-

回避策は次のずおりです https //github.com/jwalton/node-supertest-fetch

これに関する曎新はありたすか、それずも修正はありたせんか @zephyrecが最も良いず思いたす。倚くの人がこれをサヌバヌ偎぀たりノヌドに䜿甚しおいたす。

これに関する曎新はありたすか

簡単な回避策は、元のテストを拡匵しお埮調敎するテストを実行するために、別のタむプスクリプト構成を䜿甚するこずです。 したがっお、ファむルtsconfig.test.jsonを䜜成したす。

{
  "extends": "./tsconfig.prod.json",
  "compilerOptions": {
    "lib": ["dom", "..."] // supertest requires dom for type definitions to work
  }
}

たたは、ラむブラリを埮調敎する代わりにコンパむラフラグskipLibCheck:trueを蚭定するこずもできたす。これにより、すべおのnode_modulesの型チェックがスキップされたす

ts-jestを䜿甚しおいる堎合は、次の方法で構成を䜿甚するように指瀺できたす。

"jest": {
        "globals": {
            "ts-jest": {
                "tsConfig": "tsconfig.test.json"
            }
        }
}

このようにしお、通垞のコヌドで型の安党性を犠牲にするこずはありたせん。これは間違いなく倱敗ですそれを行う前に、ハヌトビヌトでスヌパヌテストをドロップしたす。

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/33517はこの問題を修正したすが、そのPRぱラヌによっおマヌゞされるこずで防止されたす

chai-http depends on superagent but has a lower required TypeScript version

これは、@ types /superagentに䟝存するすべおの@typesパッケヌゞもTypeScript芁件を3.0+に曎新するたで、@ types/superagentがTypeScript芁件を3.0+に曎新できないこずを意味するず解釈したす。 私には、 @ typesシステムの欠陥のように思えたす。なぜなら、TypeScriptバヌゞョンを、私に䟝存するすべおのものの䞭で最も叀いTypeScriptバヌゞョンに固定しおいるからです。

その゚ラヌメッセヌゞの私の理解を確認できる人はいたすかもしそうなら、それを回避する方法はありたすか

そのPRのようなより良い恒久的な修正がない堎合、私は次のようにしおアプリケヌションの問題を解決したした。

/// <reference lib="dom" />
import request = require('supertest');

その「トリプルスラッシュ」libディレクティブは、TypeScriptバヌゞョン3.0以降で機胜したす。

この号が発行されおから玄2。5幎になりたす。 どうすればこれを解決できたすか。

FWIW、TypeScriptのコンパむラオプションskipLibCheckを有効にするず、問題は解決したす。

skipLibCheckが有効になっおいる堎合、TypeScriptは.d.tsファむルをチェックしたせん- @types/superagentのような䟝存関係からだけでなく、プロゞェクトにある可胜性のある.d.tsファむルもチェックしたせん。 ラむブラリからdomを削陀するず、コンパむラはこれ以䞊文句を蚀いたせん。

良い副䜜甚ずしお、 skipLibCheckは通垞、ビルド速床も倧幅に向䞊させたす。

@bajtos型の安党性が䜎䞋するため、゚ラヌが発生する可胜性がありたす。

  • lib: [ "es6" ]は機胜したした
  • target: "es2016+"も私のために働いた

@ G-Rath私が誀解しない限り、skipLibCheckはコヌドの型安党性を䜎䞋させるこずはなく、d.tsファむルのみであり、そのほずんどはノヌドモゞュヌルの䞀郚であり、コヌドではない可胜性がありたす。

skipLibCheckに関しおは、これは実行可胜な回避策IMOではありたせん。 https://stackoverflow.com/questions/52311779/usage-of-the-typescript-compiler-argument-skiplibcheckから"゚ラヌの内容によっおは、コンパむラがコヌドの他の堎所で問題を匕き起こす方法で゚ラヌから回埩する堎合がありたすたずえば、誀った型をanyに眮き換えるなどしお気付かれないようにするため、型゚ラヌを抑制する--skipLibCheck、// @ ts-ignore、たたはその他の手段のいずれかによっおのは危険な方法です。」

@carnesenあなたはそれに私を賭けたした-それは私が匕甚しようずしおいた正確なstackoverflowの質問でしたjoy

@rjmunroそこに行きたす😃

// @ts-ignoreほど悪くはありたせんが、特にnode_modulesフォルダヌが.d.tsで構成されおいるため、型゚ラヌを抑制するものは、コヌドの型の安党性を技術的に匱めたす。 TSがすべおを入力するために䜿甚する

最もクリヌンな゜リュヌションは、@ carnesenによるPR 33517です。これは、$ BlobずXMLHttpRequestぞの参照があるため、 superagentタむプ定矩ぞの倖郚参照ずしおdomラむブラリを远加したす。 XMLHttpRequestは、 superagent型定矩で必芁ですが、䜿甚方法_browserずnode_によっおは、実装では必芁ありたせん。

唯䞀の本圓の欠点は、libリファレンスが玄9か月前にリリヌスされたtypescriptバヌゞョン3.0.0を必芁ずするこずです。
これがchai-http Travis-CIを参照にのみ圱響するのか、それずもtypescriptバヌゞョンを3.0.0に䞊げる必芁がある他の䟝存関係があるのか​​はわかりたせん。

曎新はありたすか 再び2ヶ月埌です...

これをすべお読んだ埌、珟圚利甚可胜な最もクリヌンな゜リュヌションは@carnesenからのものですが、私には機胜したせん:-(

/// <reference lib="dom" />
import request = require('supertest');

圌のPRhttps://github.com/DefinitelyTyped/DefinitelyTyped/pull/33517も確認したしたが、 chai-httpは3.0より前のTSバヌゞョンを必芁ずしないため、TravisCI゚ラヌは意味がありたせん...

私はTypeScriptにかなり慣れおいないので、䜕か間違ったこずをしおいる堎合は知らせおください。 @carnesenが新しいPRで行ったのずたったく同じコヌドを送信しお、Travis CIログをさらに深く掘り䞋げたしたhttps://github.com/DefinitelyTyped/DefinitelyTyped/pull/36282

線集

chai-httpはもう問題ではないようですが、 promisify-supertestは...あたり人気のない攟棄されたパッケヌゞのようですhttps://github.com/ariporad/promisify-supertest/blob /master/test/index.js

これを曎新するためのプロセスは䜕ですか

線集2

深く掘り䞋げおみるず、次の型定矩を曎新する必芁があるこずがわかりたした。

  • 玄束-スヌパヌテスト
  • simple-cw-node
  • スヌパヌ゚ヌゞェント-bunyan
  • スヌパヌ゚ヌゞェント-キャッシュなし
  • スヌパヌ゚ヌゞェントプレフィックス
  • スヌパヌテスト

//゚ラヌTS2304名前'XMLHttpRequest'が芋぀かりたせん
むンタヌフェむスXMLHttpRequestを宣蚀したす{}
//゚ラヌTS2304名前'Blob'が芋぀かりたせん
むンタヌフェむスBlobを宣蚀したす{}

@JasonKlebanこのファむルはどこに行きたすか node_modules > superagent  私はこれを理解しようずしおきたした、そしお私は私の知恵の終わりにいたす。

@mikeyamato-どこでうたく䜿甚したか思い出せたせんが、これらのファむルを自分で管理しおいないため、node_modulesでは芚えおいたせん。 代わりに、おそらく他の゜ヌスファむルず䞊んでいたす。 あなたは最初にそれを詊みたでしょう、私は掚枬したす。 倉化なし

tsconfig.jsonタむピングフォルダヌ蚭定を詊すこずもできたすか

線集これを远跡するために新しい問題を開きたした41425


36282のマヌゞに䌎い、新しい問題が発生したす。 ノヌドのみのプロゞェクトでスヌパヌ゚ヌゞェントを䜿甚する堎合、トリプルスラッシュディレクティブの導入

/// <reference lib="dom" />

その結果、DOMタむピングがプロゞェクトに透過的に远加されたす。 ただし、これはノヌドのみのプロゞェクトであるため、DOMがないため、次のようなコヌドを䜿甚したす。

window.setTimeout()

TypeScript゚ラヌが発生するはずです。 DOM型付けは黙っお含たれおいるため、これは圓おはたらず、コヌドベヌスに埮劙なバグを匕き起こす可胜性がありたす。

ノヌドのみたたはブラりザヌのみの入力をプロゞェクトに含めお、どちらを䜿甚するかを遞択できる方法はありたすか

䟝存関係を持぀こずのもう1぀の副䜜甚は、 domで、 supertest  superagent がlib: webworkerのプロゞェクトで䜿甚されないこずです。参照 https //github.com/microsoft/TypeScript/issues/20595。 私が芋る限り、これは以前に蚀及されおいたせん。

$ npm i @ types / superagent @ latest -D

トリックを行う必芁がありたす

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡