TypeScript får feil TS2304: cannot find name ' require'

Jeg prøver å få min første TypeScript og DefinitelyTyped Node.js-applikasjon i gang, og støter på noen feil.

Jeg får feilen "TS2304: Kan ikke finne navnet 'require' " når jeg prøver å transpile en enkel TypeScript Node.js-side. Jeg har lest gjennom flere andre forekomster av denne feilen på Stack & Overflow, og jeg tror ikke jeg har lignende problemer. Jeg kjører på shell-prompten kommandoen:

tsc movie.server.model.ts.

Innholdet i denne filen er:

'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';

Feilen kastes på linjen var mongoose=require('mongoose').

Innholdet i filen typings/tsd.d.ts er:

/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />

.d.ts-filreferansene ble plassert i de aktuelle mappene og lagt til typings/tsd.d.ts ved hjelp av kommandoene:

tsd install node --save
tsd install require --save

Den produserte .js-filen ser ut til å fungere bra, så jeg kunne ignorere feilen. Men jeg vil sette pris på å vite hvorfor denne feilen oppstår og hva jeg gjør galt.

Du kan

declare var require: any

Eller, for mer omfattende støtte, bruk DefinitelyTyped's require.d.ts

I stedet for var mongoose = require('mongoose'), kan du også prøve følgende

import mongoose from 'mongoose' // or
import mongoose = require('mongoose')
Kommentarer (4)

I stedet for:

'use strict';

/// 

Prøv:

/// 

'use strict';

dvs. referansebanen først.

Kommentarer (1)

Jeg fant ut at løsningen var å bruke TSD-kommandoen:

tsd install node --save

Som legger til / oppdaterer filen typings/tsd.d.ts, og den filen inneholder alle typedefinisjonene som kreves for en nodeapplikasjon.

Øverst i filen min legger jeg en referanse til tsd.d.ts slik:

/// 

Kravet er definert slik fra og med januar 2016:

declare var require: NodeRequire;

interface NodeModule {
    exports: any;
    require: NodeRequireFunction;
    id: string;
    filename: string;
    loaded: boolean;
    parent: any;
    children: any[];
}
Kommentarer (1)