Definitelytyped: webpack-env.d.ts ne compile pas avec node.d.ts

Créé le 9 févr. 2016  ·  6Commentaires  ·  Source: DefinitelyTyped/DefinitelyTyped

Avant de demander : Oui, j'ai recherché - et trouvé #6334 - bien que cela ne résolve pas mon problème.

J'écris une application Web qui utilise Webpack. Par conséquent, j'ai besoin d'accéder à webpack-env.d.ts dans le front-end, mais je suis également intéressé par l'utilisation du module url de Node (pour url.parse ). Si j'ai besoin de webpack-env.d.ts et node.d.ts dans le même fichier de références, il est prévisible qu'il se casse car Node redéfinit require . OIEau, je besoin d'un accès à node.d.ts « s url module et de webpack require définition.

Je peux contourner ce problème en utilisant const url: any = require('url') , bien que ce ne soit pas idéal et j'aimerais avoir des saisies pour ce module. Une autre option serait de diviser node.d.ts en ses modules constitutifs et de faire en sorte que le maître node.d.ts requière chaque module individuel, bien que je ne sois pas sûr que cela casserait quelque chose aux nombreuses personnes qui comptent sur cela fichier de déclaration TypeScript - et je ne souhaite pas particulièrement le pirater localement.

Aucune suggestion?

Commentaire le plus utile

mais que se passe-t-il si @types/node est une dépendance d'une autre dépendance (par exemple fs-extra , jsdom , shelljs , tape ) ?
a également fini par supprimer webpack-env et

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

??

Tous les 6 commentaires

Eh bien, techniquement, vous n'êtes toujours pas dans un environnement de nœud et il n'est pas correct d'inclure l'intégralité du fichier node.d.ts. Vous utilisez un package npm qui agit de la même manière que l'"url" du nœud, mais dans un environnement de navigateur. Ce que vous pouvez faire est d'extraire ces saisies de node.d.ts et d'avoir une url.d.ts distincte, comme vous l'avez déjà suggéré. Le simple fait de diviser node.d.ts en modules plus petits peut ne pas répondre à tous les besoins, car les signatures peuvent être différentes en raison de différences d'environnement (buffers vs tableaux) ou d'implémentations. Je suggérerais une saisie indépendante pour ce package "url".

J'ai en quelque sorte rencontré le même problème où j'utilise include typings/index.ts dans mon tsconfig.json pour inclure toutes les frappes. Lors de l'ajout à la fois de webpack-env.d.ts et de node , le compilateur dactylographié se plaint évidemment. Y a-t-il un moyen de contourner ceci?

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

La façon dont j'ai "résolu" le problème consistait à créer un fichier de saisie distinct pour les modules spécifiques aux nœuds que je souhaitais utiliser. Un peu un hack, malheureusement.

J'ai fini par supprimer complètement webpack-env car je n'avais besoin que d'une seule saisie dans l'ensemble de mon projet pour cela. Espérons que cela reste ainsi. J'ai essayé votre solution mais je n'aime vraiment pas polluer au maximum mes fichiers avec des références. Merci pour la réponse

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

Le 14 août 2016, à 7h08, Dan [email protected] a écrit :

La façon dont j'ai "résolu" le problème consistait à créer un fichier de saisie distinct pour les modules spécifiques aux nœuds que je souhaitais utiliser. Un peu un hack, malheureusement.

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub ou coupez le fil de discussion.

Bien sûr, moi non plus :( Mais j'avais malheureusement besoin de ce module. @foklepoint

mais que se passe-t-il si @types/node est une dépendance d'une autre dépendance (par exemple fs-extra , jsdom , shelljs , tape ) ?
a également fini par supprimer webpack-env et

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

??

Cette page vous a été utile?
0 / 5 - 0 notes