127 votes

Comment utiliser npm modules de la machine?

Je suis en train de donner un coup à la machine. Il fonctionne très bien le bonjour à tout le monde de la scène. Je vais maintenant essayer 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)
  • node-ts index.js -> Cannot find module 'lodash'. (2307)

En regardant la machine a ecrire de la documentation et de google n'a pas aidé. D'autres S/O questions sont soit sans réponse (ici et ici) ou non.

Éléments :

  • tapuscrit de 1,8 dernière
  • Oui, lodash est installé npm i --save lodash et existe dans mon système (vérifié)
  • J'ai aussi fait typings i --save lodash
  • variantes import * as _ from 'lodash' ou const _ = require('lodash') ne fonctionnent pas non plus
  • J'ai essayé de bidouiller tsconfig.json options comme suggéré dans d'autres réponses "moduleResolution": "node" et "module": "commonjs" comme le suggère quelques réponses, ne fonctionne toujours pas

Comment consommons-nous un mnp paquet à la machine ??

68voto

Blackus Points 3646

Il y a plusieurs façons d'importer des modules de mnp. Mais si vous n'obtenez pas typings, tsc toujours se plaindre qu'il ne peut pas trouver le module dont vous avez besoin (même si transpiled js est en fait de travail).

  • Si vous n'avez typings et ne pas utiliser un tsconfig.json, utilisez reference pour importer les typings:

    /// <reference path="path/to/typings/typings.d.ts" />
    
    import * as _ from 'lodash`;
    
    console.log(_.toUpper('Hello, world !'))
    
  • Si vous utilisez un tsconfig.json le fichier, assurez-vous d'avoir votre typings fichier inclus (ou pas exclus, au choix), et de faire de l' import comme sur l'exemple précédent.

Dans le cas où il n'est pas disponible typings. Vous avez deux choix: écrire votre propre sur un .d.ts le fichier, ou d'ignorer la vérification de type pour la bibliothèque.

Complètement ignorer la vérification de type (ce n'est pas la méthode recommandée), l'importation de la bibliothèque sur une variable de type any.

 const _: any = require('lodash');

 console.log(_.toUpper('Hello, world !'))

tsc va se plaindre qu' require n'existe pas. Fournir de l' node typings, ou declare à rejeter l'erreur.

32voto

Derek Soike Points 3634

Vous êtes probablement manquant de la Déclaration des Fichiers.

Voir DefinitelyTyped pour plus d'info.


Essayez ceci:

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

Maintenant, vous pouvez importer.

import _ from 'lodash';

Si le module que vous êtes à l'importation a plusieurs exportations, vous pouvez faire ceci:

import { Express, Router } from 'express';

Si le module que vous êtes à l'importation "n'a pas de défaut à l'exportation" vous devez faire ceci:

import * as http from 'http';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X