TypeScript obtient l'erreur TS2304 : cannot find name ' ; require' ;
J'essaie de mettre en place ma première application TypeScript et DefinitelyTyped Node.js, et je rencontre quelques erreurs.
J'obtiens l'erreur "TS2304 : Cannot find name 'require' ; " ; lorsque j'essaie de transpiler une simple page TypeScript Node.js. J'ai lu plusieurs autres occurrences de cette erreur sur Stack Overflow, et je ne pense pas avoir de problèmes similaires. J'exécute à l'invite du shell la commande :
tsc movie.server.model.ts.
Le contenu de ce fichier est :
'use strict';
/// <reference path="typings/tsd.d.ts" />
/* movie.server.model.ts - definition of movie schema */
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var foo = 'test';
L'erreur se produit à la ligne var mongoose=require('mongoose' ;)
.
Le contenu du fichier typings/tsd.d.ts est le suivant :
/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />
Les références du fichier .d.ts ont été placées dans les dossiers appropriés et ajoutées à typings/tsd.d.ts par les commandes :
tsd install node --save
tsd install require --save
Le fichier .js produit semble fonctionner correctement, je pourrais donc ignorer l'erreur. Mais j'aimerais savoir pourquoi cette erreur se produit et ce que je fais de mal.
Vous pouvez
Ou, pour un support plus complet, utilisez [DefinitelyTyped's require.d.ts][1].
Aussi, au lieu de
var mongoose = require('mongoose' ;)
, vous pouvez essayer ce qui suit[1] : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/requirejs/require.d.ts
Au lieu de :
Essayez :
c'est-à-dire le chemin de référence en premier.
J'ai trouvé que la solution était d'utiliser la commande TSD :
qui ajoute/met à jour le fichier
typings/tsd.d.ts
et ce fichier contient toutes les définitions de type qui sont requises pour une application de noeud.En haut de mon fichier, je mets une référence au fichier
tsd.d.ts
comme ceci :L'exigence est définie comme ceci à partir de janvier 2016 :