2015-01-18 1 views
1

모듈을 작성했습니다 (simpledblayer-mongo). 모듈은 simpledblayer에 따라 다르며 DB 관련 기능을 제공합니다.노드의 모듈에서 특정 파일로드

단위 테스트에 문제가 있습니다.

  • simpledblayer-mongosimpledblayer-mongo에서 "서브 모듈"을 정의하고 서브 모듈이 node_modules 아래에 배치되어 있는지 확인 GIT를 쉽게있어 사용 simpledblayer합니다 (test.js 파일)
  • 에서 테스트의 목록을 가져옵니다 : 여기에 문제가 있다는 것입니다 . 따라서 모든 테스트가 포함 된 파일은 node_modules/simpledblayer/tests에 있습니다.
  • NPM에서는 simpledblayerdevDependency으로 정의합니다. simpledblayer 이후로 실제 필요가 직선 의존성

난 데 문제는이 같이 관계없이 simpledblayer-mongo에 의해 필요하지 않습니다 : 사용자가 GIT에서 모듈을 얻을 수 있습니다 (모듈이 node_modules에 보장합니다/simpledblayer) 또는 NPM (모듈은 node_modules에 배치 될 수도 있고 실제로/etc가 중복 제거 될 수도 있으며 실제로는 어디에도있을 수 있습니다).

나는 (그 자체가 필요-수있는 모듈로 인 한 simpledblayer로) simpledblayertest.js 파일 에 관계없이 어디 있는지 경우를로드해야합니다. 모듈 경로가 무엇인지에 관계없이 모듈에서 특정 파일을 가져 오는 것에 대한 힌트가 있습니까?

감사합니다.

머크.

답변

2

당신은 당신이 전달 모듈 이름의 (모듈의 package.json에서)이 main 속성 값에 대한 절대 경로를 반환 require.resolve()를 사용할 수 있습니다. 여기에서, 당신은에 도착하는 데 도움이 path/fs 모듈을 사용할 수 있습니다 오른쪽 경로는 require.resolve()에 의해 반환되는 절대 경로를 기준으로합니다.

따라서 simpledblayer의 package.json에 main: 'index.js'이있는 경우 require.resolve('simpledbplayer')/home/foo/project/node_modules/simpledblayer/index.js과 같은 결과를 반환 할 수 있습니다.

+0

위대한 아이디어, 환상적, 그게 내가 한 일이다. 감사! – Merc

+0

오, 브라이언 그것은 당신이었습니다 :) 다시 한번 감사드립니다! – Merc

관련 문제