2017-03-22 4 views
6

Ich habe Angular2-Anwendung, die mit WebPack erstellt wird. Ich habe WebPack von V1.8 auf V2 aktualisiert, und alles scheint gut zu funktionieren. Das einzige Problem ist, dass der alte Code hat die folgende:Kann Namespace NodeJS nach dem Upgrade des Webpacks nicht finden

import Timer = NodeJS.Timer; 
.... 
apptInterval: Timer; 
.... 
this.apptInterval = setInterval(() => { ... }, 1000); 

Nach dem Upgrade das gibt mir eine Fehlermeldung: TS2503: Cannot find namespace 'NodeJS'.

tsconfig.json sieht wie folgt aus:

{ 
"compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": ["es2015", "dom"], 
    "noImplicitAny": true, 
    "suppressImplicitAnyIndexErrors": true 
    } 
} 

Die Dokumentation für Angular/Webpack nicht mehr typings.json; Aber selbst wenn ich aus dem Webpack 1-Verzeichnis kopiere, hilft das nicht. Der Inhalt ist typings.json ist

{ 
"globalDependencies": { 
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 
    "node": "registry:dt/node" 
    } 
} 

Interessant, wenn ich Referenzen auf NodeJS entfernen, funktioniert alles gut. Wie folgt aus:

apptInterval: any; 
.... 
this.apptInterval = setInterval(() => { ... }, 1000); 

Wenn ich unter F12 Debugger sehen, ist die Art der apptInterval ZoneTask. Ich bin sicher, dass es einen Weg gibt, es stark zu machen, aber es entkommt mir. Der einzige Vorschlag, ich fand, war typings install dt~node --global --save-dev (der im wesentlichen aktualisiert typings.json laufen, aber nicht hilft

Antwort

2

Für [email protected]+ verwenden @types.

npm install -D @types/node @types/jasmine 

Wenn Sie immer noch auf hängen wollen zu typings, umfassen typings/index.d.ts zu Ihrem tsconfig.json:

{ 
    "include": [ // or "files" 
    "typings/index.d.ts" 
    ] 
} 
+0

Leider machte keine Option einen Unterschied. – Felix

+0

Öffnen Sie Ihren Code in VSCode und prüfen Sie, ob 'NodeJS' in der intelliSense existiert. Es sollte dort sein, dass Sie Dinge richtig eingerichtet haben. – unional

11

Wenn Sie auch tsconfig.app.json in Ihrem Arbeitsverzeichnis haben, versuchen, das ein hinzuzufügen ttribute Knoten zu den Typen Feld. Wie:

{ 
    "extends": "../tsconfig.json", 
    "compilerOptions": { 
    "outDir": "../out-tsc/app", 
    "module": "es6", 
    "baseUrl": "", 
    "types": ["node"] --> ADD THIS 
    }, 
    "exclude": [ 
    "test.ts", 
    "**/*.spec.ts" 
    ] 
} 
+0

Es hat für mich funktioniert. Vielen Dank! –

+0

@LuigiRubino Ich bin froh, dass ich helfen konnte! – Fzum

Verwandte Themen