Je me demande comment charger le module nodejs node_modules
répertoire node_modules
depuis la classe TypeScript
.
Lorsque j’essaie de comstackr le fichier .ts
qui contient:
var sampleModule = require('modulename');
compilateur me dit que je ne peux pas utiliser besoin dans cette scope. (cette ligne est au début du fichier).
Existe-t-il un moyen de charger et d’utiliser les modules de node_modules
dans la classe TypeScript
?
Typécript se plaindra toujours quand il lui sera impossible de trouver un symbole. Le compilateur est fourni avec un ensemble de définitions par défaut pour window
, document
et autres, spécifié dans un fichier appelé 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 dire au compilateur nous-mêmes que cette fonction existera à l’exécution en utilisant la syntaxe declare
:
declare function require(name:ssortingng); var sampleModule = require('modulename');
Sur mon système, cela comstack très bien.
La syntaxe correcte est la suivante:
import sampleModule = require('modulename');
ou
import * as sampleModule from 'modulename';
Ensuite, comstackz votre TypeScript avec --module commonjs
.
Si le paquet ne contient pas de fichier index.d.ts
et que son package.json
n’a pas de propriété "typings"
, tsc
indiquera qu’il ne sait pas à quoi fait référence 'modulename'
. Pour cela, vous devez trouver un fichier .d.ts
sur http://definitelytyped.org/ ou en écrire un vous-même.
Si vous écrivez du code pour Node.js, vous voudrez aussi le fichier node.d.ts
de http://definitelytyped.org/ .
La meilleure solution consiste à obtenir une copie des définitions de type de Node. Cela résoudra toutes sortes de problèmes de dépendance, pas seulement la require()
. Cela a déjà été fait en utilisant des paquets comme les typings
, mais comme Mike Chamberlain l’a mentionné, les typages sont obsolètes. La manière moderne le fait comme ceci:
npm install --save-dev @types/node
Non seulement il corrigera l’erreur du compilateur, mais il appenda également les définitions de l’API Node à votre IDE.
Utilisez les typages pour accéder aux fonctions de noeud depuis TypeScript:
typings install env~node --global
Si vous n’avez pas de frappe, installez-le:
npm install typings --global