Comment consumr des modules npm à partir de caractèrescript?

Je donne un coup à la dactylographie. Ça marche très bien sur la scène du salut. J’essaie maintenant d’utiliser un module npm:

index.ts =

 import _ = require('lodash') console.log(_.toUpper('Hello, world !')) 

Cela ne fonctionne pas:

  • tsc index.ts -> Cannot find module 'lodash'. (2307) Cannot find module 'lodash'. (2307)
  • node-ts index.js -> Cannot find module 'lodash'. (2307) Cannot find module 'lodash'. (2307)

Regarder la documentation typescripte et google n’a pas aidé. Les autres questions sur les S / O sont sans réponse ( ici et ici ) ou sans rapport.

Éléments :

  • texte typescript 1.8 dernier
  • Oui, lodash est installé npm i --save lodash et existe dans mon système de fichiers (coché)
  • J’ai aussi fait des typings i --save lodash
  • les variantes import * as _ from 'lodash' ou const _ = require('lodash') ne fonctionnent pas non plus
  • J’ai essayé de modifier les options tsconfig.json comme suggéré dans d’autres réponses "moduleResolution": "node" et "module": "commonjs" comme suggéré dans certaines réponses, ne fonctionne toujours pas

Comment consum-t-on un paquet npm en typescript ??

Il existe plusieurs manières d’importer des modules à partir de npm. Mais si vous n’obtenez pas de frappe, tsc se plaindra toujours de ne pas trouver le module que vous souhaitez (même si jp transstackd fonctionne).

  • Si vous avez des typages et n’utilisez pas de tsconfig.json , utilisez la reference pour importer les typages:

     ///  import * as _ from 'lodash`; console.log(_.toUpper('Hello, world !')) 
  • Si vous utilisez un fichier tsconfig.json , assurez-vous que votre fichier de saisie est inclus (ou non exclu, au choix) et effectuez l’ import comme dans l’exemple précédent.

Dans le cas où il n’y a pas de frappe disponible. Vous avez deux .d.ts : écrire votre propre fichier .d.ts ou ignorer la vérification de type pour la bibliothèque.

Pour ignorer complètement la vérification de type (ce n’est pas la méthode recommandée), importez la bibliothèque sur une variable de type any .

  const _: any = require('lodash'); console.log(_.toUpper('Hello, world !')) 

tsc se plaindra que l’ require n’existe pas. Fournissez des types de node ou declare le pour ignorer l’erreur.

Vous manquez probablement les fichiers de déclaration .

Voir DefinitelyTyped pour plus d’informations.


Essaye ça:

 npm install --save lodash npm install --save @types/lodash 

Maintenant, vous pouvez importer.

 import _ from 'lodash'; 

Si le module que vous importez comporte plusieurs exportations , vous pouvez le faire:

 import { Express, Router } from 'express'; 

Si le module que vous importez “n’a pas d’exportation par défaut”, vous devez le faire:

 import * as http from 'http';