TypeScript získava chybu TS2304: nemôže nájsť názov ' require'
Snažím sa spustiť svoju prvú aplikáciu v jazyku TypeScript a DefinitelyTyped Node.js a narážam na niekoľko chýb.
Pri pokuse o transpiláciu jednoduchej stránky TypeScript Node.js dostávam chybu "TS2304: Cannot find name 'require' ". Prečítal som si niekoľko ďalších výskytov tejto chyby na Stack Overflow a myslím, že nemám podobné problémy. Spúšťam na výzvu shellu príkaz:
tsc movie.server.model.ts.
Obsah tohto súboru je:
'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';
Chyba je vyhodená na riadku var mongoose=require('mongoose')
.
Obsah súboru typings/tsd.d.ts je:
/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />
Odkazy na súbory .d.ts boli umiestnené do príslušných priečinkov a pridané do typings/tsd.d.ts pomocou príkazov:
tsd install node --save
tsd install require --save
Zdá sa, že vytvorený súbor .js funguje správne, takže som mohol ignorovať chybu. Ocenil by som však, keby som vedel, prečo sa táto chyba vyskytuje a čo robím zle.
Môžete
Alebo pre komplexnejšiu podporu použite DefinitelyTyped's require.d.ts
Taktiež namiesto
var mongoose = require('mongoose')
môžete skúsiť nasledovnéNamiesto:
Skúste:
t.j. najprv referenčná cesta.
Zistil som, že riešením je použitie príkazu TSD:
Ktorý pridáva/aktualizuje súbor
typings/tsd.d.ts
a tento súbor obsahuje všetky definície typov, ktoré sú potrebné pre uzlovú aplikáciu.Na začiatok môjho súboru som vložil odkaz na súbor
tsd.d.ts
takto:Require je takto definovaný od januára 2016: