2017-10-13 3 views
0
내가 농담을 사용하여 내 구성 요소를 테스트 할

와 구성 요소 테스트 반응,하지만 난 그것을 실행할 때 나는 'Router.js'는 농담

at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:191:17) 
    at Object.<anonymous> (node_modules/react-router-dom/Router.js:5:15)` 

에서 모듈의 반응 라우터/라우터 '를 찾을 수 없습니다' 무엇입니까 개발 서버를 시작하면 응용 프로그램이 핵심적으로 작동합니다. 당신은 moduleDirectories을 덮어 쓰는 당신이 ["node_modules"] 인 디폴트를 포함하지 않는

"jest": { 
    "testPathIgnorePatterns": [ 
     "/node_modules/" 
    ], 
    "moduleDirectories": [ 
     "<rootDir>/node_modules", 
     "<rootDir>/src" 
    ] 
    } 

답변

2

: 같은 package.json에

내 농담의 설정 보인다. 대신 <rootDir>/node_modules을 포함하고 있습니다. 동일하지 않습니다. 프로젝트의 루트에있는 node_modules을 조사하는 반면, Node.js의 모듈 해상도는 "node_modules"입니다. Node.js의 동작은 모듈이 발견되지 않으면 현재 디렉토리에서 node_modules을 찾은 것입니다 (../node_modules). 모듈이 발견되거나 파일 시스템의 루트에 도달 할 때까지 계속됩니다. 자세한 내용은 Loading from node_modules Folders을 참조하십시오.

중요한 차이점은 기본 동작을 변경하면 중첩 모듈이 손상된다는 것입니다. 귀하의 경우에는 react-router-domreact-router as a dependency를 사용하고 node_modules은 다음과 같습니다 루트 디렉토리는 jestreact-router-dom 포함이 예에서

node_modules 
├─ jest 
└─ react-router-dom 
    └─ node_modules 
     └─ react-router 

, node_modules를, 그래서 react-router을 찾을 것입니다.

참고 : NPM은 버전 3과 종속성을 게양 시작과 결과는 다음과 같습니다

node_modules 
├─ jest 
├─ react-router-dom 
└─ react-router 

npm v3 Dependency Resolution를 참조하십시오.

심각하게 오래된 npm 버전을 사용하는 경우 즉시 업그레이드해야합니다. 그러나 그 행동에 의존해서는 안되며 항상 기본 모듈 해상도를 포함해야합니다.

"jest": { 
    "testPathIgnorePatterns": [ 
    "/node_modules/" 
    ], 
    "moduleDirectories": [ 
    "node_modules", 
    "<rootDir>/src" 
    ] 
}