2016-07-10 27 views
7

Ho provato ad installare chai utilizzando il seguente comando.non riesce a trovare il modulo chai sebbene esista nella cartella dei moduli nodo

npm install --save-dev chai 

Quindi ho eseguito la mia classe di test unitario con le seguenti importazioni.

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

Getta gli errori di seguito.

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' 

Cosa sto facendo di sbagliato qui? Posso vedere anche la cartella chai all'interno della cartella node_modules.

Quando dico var chai = require ('chai'); Funziona! perché non importa il lavoro?

risposta

1

non ho installato una digitazione per chai, cioè non ho di cui chai da DefinitelyTyped ma ho installato come un nodo modulo. Quindi ho dovuto chiamarlo usando una dichiarazione require nel mio codice dattiloscritto.

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

Perché si dovrebbe usare 'require' in un progetto TypeScript specialmente quando un tipo è definito per' chai'? – bhantol

0

Probabilmente stai usando qualcosa come Babel dietro le quinte per traspare in ES5.

Se questo è il caso, in realtà sta eseguendo require su Nodo, stile CommonJS.

In questo modo si può riuscire se si aggiunge il percorso con ./ proprio come facciamo in CommonJS.

Si prega di fare un tentativo, spero che questo risolve il problema:

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

Sto usando questo generatore https://www.npmjs.com/package/generator-typescript-npm-bower. Il suo targeting per ES5. Ma mettere ./ non ha aiutato. Dice ancora che non riesce a trovare il modulo. Non riesco a cambiare l'obiettivo in ES6. Quindi qualsiasi altro workaround? – mayooran

+0

Se ha come target ES5, credo che non dovresti provare a utilizzare la sintassi 'import {assert} da 'chai'' perché si tratta della sintassi ES6, non di ES5. Vorrei quindi andare avanti con 'var chai = require ('chai');' poiché questa è una sintassi ES5 valida. –

Problemi correlati