2011-03-13 14 views
15

저는 Node Boilerplate을 사용하고 있습니다. 다른 프로젝트에서 다른 프로젝트를 만들 때까지 모두 잘 돌아갔습니다.Node.js - 모듈을 찾을 수 없습니다

이제 정확히 동일한 코드베이스 (이 프로젝트는 그대로)가 두 개의 다른 폴더에 있습니다. 나는 어떤 문제없이 그 중 하나를 실행할 수 있지만, 다른 하나는과 실패 :

% node app.js 
node.js:116 
     throw e; // process.nextTick error, or 'error' event on first tick 
     ^
Error: Cannot find module 'connect/middleware/router' 
    at Function._resolveFilename (module.js:299:11) 
    at Function._load (module.js:245:25) 
    at require (module.js:327:19) 
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/server.js:17:14) 
    at Module._compile (module.js:383:26) 
    at Object..js (module.js:389:10) 
    at Module.load (module.js:315:31) 
    at Function._load (module.js:276:12) 
    at require (module.js:327:19) 
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/index.js:28:31) 

이 비슷한 문제는 여기에서 설명 - 문제가 연결/표현의 호환되지 않는 버전에 있음을 말한다 https://github.com/visionmedia/express/issues/535을.

하지만 어떻게 가능합니까? 소스 코드는 정확히 두 폴더에서 동일하며 한 복사본에서 제대로 작동하고 다른 복사본에서 실패합니다.

답변

7

OK, 내 자신의 질문에 대답하자 : 잘못된 정보에 대한

죄송합니다 - 그 두 개의 폴더가 (내가 더 잘 유닉스은 diff를 배울 거 필요 해요) 동일하지 않았다. 그리고 거기에 코드 ("연결")가 필요합니다.

/lib 폴더에 대한 로컬 체크 아웃이 우선적으로 필요하지만 거기에 없으면 이전에 설정 한 ~/.node_modules에서 연결이로드됩니다. 마지막 코멘트에

8

두 폴더가 공통적 인 상위를 공유합니까? 노드는 ~/.node_modules 및/node_modules의 모듈을 앱 디렉토리에서 찾습니다.

5

@see node.js express module not loading properly는, 어쩌면

가 아닌 시스템 수준이 나를 위해 작동

+0

에, 응용 프로그램 폴더 안에 모듈을 설치하는 것입니다의 기본 개념을하는 데 도움이,하지만 난 ' '-g'로 시스템 레벨을 설치하는 것이 왜 js 파일에서 모듈을 찾지 못하는지 혼란 스럽습니다. – Adam