Comment charger un module NodeJS standard (à partir de node_modules
) depuis une classe TypeScript
?
Quand j'essaye de compiler .ts
fichier contenant:
var sampleModule = require('modulename');
Les invites du compilateur que je ne peux pas utiliser ont besoin de cette étendue. (cette ligne est au début du fichier).
TypeScript se plaindra toujours quand il est impossible de trouver un symbole. Le compilateur vient avec un ensemble de définitions par défaut pour window
, document
et ainsi de suite dans un fichier nommé lib.d.ts
. Si je fais un grep pour require
dans ce fichier, je ne peux trouver aucune définition d'une fonction require
. Par conséquent, nous devons indiquer nous-mêmes au compilateur que cette fonction existera à l'exécution à l'aide de la syntaxe declare
:
declare function require(name:string);
var sampleModule = require('modulename');
Sur mon système, cela compile parfaitement.
La syntaxe correcte est la suivante:
import sampleModule = require('modulename');
ou
import * as sampleModule from 'modulename';
Puis compilez votre TypeScript avec --module commonjs
.
Si le paquet ne vient pas avec un index.d.ts
fichier et son package.json
n'a pas de "typings"
propriété, tsc
aboie qu’elle ne sait pas quoi 'modulename'
fait référence à. Pour cela, vous devez trouver un .d.ts
fichier pour cela sur http://definitelytyped.org/ , ou écrivez-en un vous-même.
Si vous écrivez du code pour Node.js, vous voudrez aussi le node.d.ts
fichier de http://definitelytyped.org/ .
La meilleure solution consiste à obtenir une copie des définitions de type du nœud. Cela résoudra toutes sortes de problèmes de dépendance, pas seulement require()
. Cela avait été fait auparavant avec des paquets comme typings
, mais comme Mike Chamberlain l’a mentionné, les saisies sont obsolètes. La manière moderne le fait comme ceci:
npm install --save-dev @types/node
Non seulement cela corrigera l’erreur du compilateur, mais il ajoutera également les définitions de l’API Node) à votre IDE.
Utilisez des typings pour accéder aux fonctions de noeud à partir de TypeScript:
typings install env~node --global
Si vous n'avez pas de dactylographie ???? Installez-le:
npm install typings --global