2016-07-10 3 views
7

다음 명령을 사용하여 chai를 설치해 보았습니다.노드 모듈 폴더에 존재하지만 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

:

그것을 시도주십시오, 나는이 문제를 해결 희망 기준 치수. 그러므로 필자는 타이프 스크립트 (typcript) 코드에서 require 문을 사용하여 호출해야했다.

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

특히 type이'chai '로 정의되었을 때 TypeScript 프로젝트에서'require'를 사용하는 이유는 무엇입니까? – bhantol

0

아마도 Babel과 비슷한 것을 사용하여 ES5로 옮길 수 있습니다.

실제로 Node, CommonJS 스타일을 통해 require을 실행 중입니다.

CommonJS와 마찬가지로 ./ 경로를 추가하면 성공할 수 있습니다. 그게 내가 노드로 DefinitelyTyped에서 차이를 언급하지 않은 있지만, 설치, 나는이 차이에 대한 입력을 설치하지 않은

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

이 생성기는 https://www.npmjs.com/package/generator-typescript-npm-bower를 사용하고 있습니다. 그것의 타겟팅 ES5. 그러나 퍼팅 ./ ​​도움이되지 않았다. 여전히 모듈을 찾을 수 없다고 말합니다. 나는 표적을 ES6으로 바꿀 수 없다. 다른 해결 방법은 없습니까? – mayooran

+0

ES5를 목표로한다면 'chai'의 'import {assert}'구문을 ES5가 아닌 ES6 구문으로 사용해서는 안된다고 생각합니다. 그 다음에 유효한 'ES5 구문'이기 때문에'var chai = require ('chai');와 같이 진행할 것입니다. –

관련 문제