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?
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) {
...
😢
Hilfreichster Kommentar
aber was ist, wenn
@types/node
eine Abhängigkeit einer anderen Abhängigkeit ist (zBfs-extra
,jsdom
,shelljs
,tape
)?auch
webpack-env
und😢