Definitelytyped: webpack-env.d.ts kompiliert nicht mit node.d.ts

Erstellt am 9. Feb. 2016  ·  6Kommentare  ·  Quelle: DefinitelyTyped/DefinitelyTyped

Bevor Sie fragen: Ja, ich habe gesucht - und #6334 gefunden -, obwohl dies mein Problem nicht anspricht.

Ich schreibe eine Webanwendung, die Webpack verwendet. Daher benötige ich im Frontend Zugriff auf webpack-env.d.ts , bin aber auch daran interessiert, das url Modul von Node (für url.parse ) zu verwenden. Wenn ich webpack-env.d.ts und node.d.ts in derselben Referenzdatei benötige, bricht sie vorhersehbar ab, weil Node require neu definiert. IOW, ich benötige Zugriff auf das node.d.ts url Modul von node.d.ts und die require Definition von Webpack.

Ich kann dies umgehen, indem ich const url: any = require('url') , obwohl dies nicht ideal ist und ich gerne Eingaben für dieses Modul hätte. Eine andere Möglichkeit wäre, node.d.ts in seine konstituierenden Module aufzuteilen und den Master node.d.ts jedes einzelne Modul verlangen zu lassen, obwohl ich mir nicht sicher bin, ob dies etwas von den vielen Leuten brechen würde, die sich darauf verlassen TypeScript-Deklarationsdatei - und ich möchte sie nicht unbedingt lokal zusammenhacken.

Irgendwelche Vorschläge?

Hilfreichster Kommentar

aber was ist, wenn @types/node eine Abhängigkeit einer anderen Abhängigkeit ist (zB fs-extra , jsdom , shelljs , tape )?
auch webpack-env und

if ((module as any).hot) {
...

😢

Alle 6 Kommentare

Nun, technisch gesehen befinden Sie sich immer noch nicht in der Knotenumgebung und es ist nicht richtig, die gesamte Datei node.d.ts einzuschließen. Sie verwenden ein npm-Paket, das sich wie die "url" des Knotens verhält, jedoch in einer Browserumgebung. Was Sie tun können, ist, diese Typisierungen aus node.d.ts zu extrahieren und eine separate url.d.ts zu erstellen, wie Sie bereits vorgeschlagen haben. Das einfache Aufteilen von node.d.ts in kleinere Module erfüllt möglicherweise nicht alle Anforderungen, da die Signaturen aufgrund von Umgebungsunterschieden (Puffer vs. Arrays) oder Implementierungen unterschiedlich sein können. Ich würde eine unabhängige Typisierung für dieses "URL" -Paket vorschlagen.

Ich bin auf das gleiche Problem gestoßen, bei dem ich include typings/index.ts in meinem tsconfig.json , um alle Eingaben einzuschließen. Beim Hinzufügen von webpack-env.d.ts und node beschwert sich der Typoskript-Compiler offensichtlich. Gibt es einen Weg, dies zu umgehen?

test_index.ts(1,28): error TS2339: Property 'context' does not exist on type 'NodeRequire'.

Ich habe es "gelöst", indem ich eine separate Typisierungsdatei für die knotenspezifischen Module erstellt habe, die ich verwenden wollte. Leider ein kleiner Hack.

Am Ende habe ich webpack-env komplett entfernt, da ich dafür nur eine Eingabe in meinem gesamten Projekt benötigte. Hoffentlich bleibt es so. Ich habe Ihre Lösung ausprobiert, aber ich mag es wirklich nicht, meine Dateien so weit wie möglich mit Referenzen zu verschmutzen. Danke für die Antwort

Saurabh Sharma / Qualitätstechnik
[email protected] / (925)-878-5722
Yammer, Microsoft
http://www.foklepoint.com

Am 14. August 2016 um 7:08 Uhr schrieb Dan [email protected] :

Ich habe es "gelöst", indem ich eine separate Typisierungsdatei für die knotenspezifischen Module erstellt habe, die ich verwenden wollte. Leider ein kleiner Hack.


Sie erhalten dies, weil Sie einen Kommentar abgegeben haben.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub an oder schalten Sie den Thread stumm.

Sicher, ich auch nicht :( Aber ich brauchte dieses Modul leider. @foklepoint

aber was ist, wenn @types/node eine Abhängigkeit einer anderen Abhängigkeit ist (zB fs-extra , jsdom , shelljs , tape )?
auch webpack-env und

if ((module as any).hot) {
...

😢

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen