2016-07-10 8 views
7

Ich habe versucht, Chai mit dem folgenden Befehl zu installieren.kann Modul Chai nicht finden, obwohl es in Knoten Module Ordner

npm install --save-dev chai 

Dann habe ich meine Unit-Test-Klasse mit den folgenden Importen ausgeführt.

import {assert} from 'chai'; 
import {expect} from 'chai'; 

Es wirft die folgenden Fehler.

test\main\MessageBroker.spec.ts(3,22): error TS2307: Cannot find module 'chai'. 
[05:38:45] [Typescript] TypeScript error: test\main\MessageBroker.spec.ts(3,22): error TS2307: Cannot find module 'chai'. 
test\main\MessageBroker.spec.ts(4,22): error TS2307: Cannot find module 'chai'. 
[05:38:45] [Typescript] TypeScript error: test\main\MessageBroker.spec.ts(4,22): error TS2307: Cannot find module 'chai' 

Was mache ich hier falsch? Ich kann Chai-Ordner im Ordner node_modules auch sehen.

Wenn ich sage var chai = require ('chai'); Es klappt! Warum importiert keine Arbeit?

Antwort

1

ich eine Typisierung für chai nicht installiert haben, das heißt ich habe von DefinitelyTyped nicht chai bezeichnet aber haben sie als Knoten installiert Modul. Daher musste ich es mit einer require-Anweisung in meinem Typoskript-Code aufrufen.

var chai = require('chai'); 
+0

Warum sollte man 'require' in einem TypeScript-Projekt verwenden, besonders wenn ein Typ für' chai' definiert ist? – bhantol

0

Wahrscheinlich verwenden Sie so etwas wie Babel hinter den Kulissen, um auf ES5 zu transponieren.

Wenn das der Fall ist, führt es tatsächlich require über Knoten, CommonJS-Stil.

Auf diese Weise können Sie erfolgreich sein, wenn Sie einfach den Pfad mit ./ anhängen, genau wie in CommonJS.

Bitte versuchen Sie es, ich hoffe, das Ihr Problem beheben:

import {assert} from './chai'; 
import {expect} from './chai'; 
+0

Ich benutze diesen Generator https://www.npmjs.com/package/generator-typescript-npm-bower. Es zielt auf ES5. Aber das ./ hat nicht geholfen. Es sagt immer noch, dass es das Modul nicht finden kann. Ich kann das Ziel nicht auf ES6 ändern. Also irgendwelche anderen Workarounds? – mayooran

+0

Wenn es um ES5 geht, dann sollten Sie nicht versuchen, die Syntax 'import {assert} von 'chai' zu verwenden, denn das ist die ES6-Syntax, nicht ES5. Ich würde dann einfach weiter gehen und mit 'var chai = require ('chai');' da ist das eine gültige ES5-Syntax. –