2016-07-10 17 views
7

次のコマンドを使用してchaiをインストールしようとしました。ノードモジュールフォルダには存在しますが、チャイモジュールは見つかりません

npm install --save-dev chai 

次に、次のインポートでユニットテストクラスを実行しました。

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

以下のエラーが発生します。

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' 

私はここで間違っていますか?私はnode_modulesフォルダ内のchaiフォルダも見ることができます。

私はvar chai = require( 'chai')と言っています。できます!なぜ仕事をインポートしないのですか?

答えて

1

私はDefinitelyTypedからチャイを参照していないされているが、ノードとして、それをインストールしているチャイのためのタイピングを、インストールしていませんモジュール。したがって、私は自分のタイプコードのrequire文を使って呼び出す必要がありました。

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

特にTypeが 'chai'のために定義されているときに、TypeScriptプロジェクトで' require'を使うのはなぜですか? – bhantol

0

おそらく、背後にあるBabelのようなものを使ってES5に移っているでしょう。

この場合、Node、CommonJSスタイルで実際にrequireを実行しています。

この方法では、CommonJSと同じように./のパスを追加するだけで成功する可能性があります。

私は、これはあなたの問題を解決を願って、それを試してみるてください:

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

私はこの発電機を使用しています。https://www.npmjs.com/package/generator-typescript-npm-bowerそのターゲットES5。しかし、./は助けにはなりませんでした。それはまだそれがモジュールを見つけることができないと言います。目標をES6に変更することはできません。他の回避策はありますか? – mayooran

+0

もしES5を対象としているのであれば、ES5ではなくES6の構文であるため、 'import {assert}'を 'chai'から構文を使用しないでください。私はちょうど前に行くだろうし、 'var chai = require( 'chai');'これは有効なES5の構文であるためです。 –

関連する問題