2012-09-27 6 views
3

node.js에서 var foo = require (../)가 발생할 때 어떤 모듈을 찾습니까?node.js의 require (../)는 어떻게 작동합니까?

현재 디렉토리에서 하나의 UP 디렉토리가 보일 것 같지만 정확히 무엇을 찾고할까요?

아마도 에 비유가 있습니다. (C 언어) 또는 (가져 오기)이 Python에 있습니까?

내가 Node.js를 시작하여 http://nodejs.org/api/modules.html 을 읽고 GitHub의에 예제 코드에 와서 봤는데 같은

var express = require('express') 
    , tracker = require('../') 

이 코드는 (파일 이 명시 모듈의 내용을 표현하는 변수에 할당 할 것 같다) 그의 경로는 npm을 사용하여 익스프레스를 설치 한 후에 전역이어야하며, 두 가지 유형의 모듈 설치가 있다는 것을 이해할지라도 이해할 만하다.하지만 그것은 또 다른 질문이다.

하지만 어떤 내용이 변수 에 할당되어 있습니까??

+0

'express'는 전역 적으로 설치된 모듈 일 필요는 없습니다.이'require' 스타일은 대개 [node_modules' 디렉토리에서로드됩니다] (http://nodejs.org/api/modules.html) #modules_loading_from_node_modules_folders). 내 생각에'require ('../')'[현재 디렉토리의'package.json'을 찾으십시오.] (http://nodejs.org/api/modules.html#modules_folders_as_modules)는 현재 모듈의 디렉토리 위에 있습니다. , 비록 내가 어떤 상황에서 거기에 하나를 찾을 수 있을지 모르겠지만. – lanzz

+0

Checkout [모듈을 폴더로 사용] (http://nodejs.org/api/modules.html # modules_folders_as_modules)'require ('../')','require ('express')'에 대한'node_modules 폴더에서로드 중 '(http://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) , "npm'의 [folders (1)] (https://npmjs.org/doc/folders.html#tl-dr)는"* 두 가지 유형의 모듈 설치가 있습니다. * " –

답변

8

이것은 해당 디렉토리의 내용에 따라 다릅니다.

X는 './'또는 '/'또는 '../'로 시작하는 경우 :

가. LOAD_AS_FILE (Y + X)
b. LOAD_AS_DIRECTORY (Y + X)

LOAD_AS_FILE (X) :

  1. X는 자바 스크립트 텍스트로 파일로드 X 인 경우. 중지
  2. X.js가 파일 인 경우 X.js를 JavaScript 텍스트로로드하십시오. 중지
  3. X.node가 파일이면 X.node를 2 진 addon으로로드하십시오.

    1. X/package.json 파일 인 경우,
      A :

    LOAD_AS_DIRECTORY (X)를 중지합니다. X/package.json을 분석하고 "main"필드를 찾습니다.
    b. M = X + (json 본문)
    c. LOAD_AS_FILE (M)

  4. X/index.js가 파일 인 경우 X/index.js를 JavaScript 텍스트로로드하십시오. STOP
  5. X/index.node가 파일이면 X/index.node를 2 진 addon으로로드하십시오. STOP
관련 문제