web-dev-qa-db-fra.com

nodejs nécessite un fichier TypeScript

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).

86
Zdenek Sejcek

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.

95
Valentin

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/ .

45
Jesse

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.

39
rharriso

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
3
Oded Breiner