Node.js '__dirname' 대 'process.cwd()'

최근에 나는 거의 모든 프로젝트에 Nodejs를 사용하고 있는데, 이는 현재 사용 가능한 백엔드 기술 중 가장 인기 있는 기술 중 하나입니다. Nodejs로 몇 가지 프로젝트를 진행한 후, 저는 저와 같은 대부분의 개발자가 노드의 두 글로벌 객체(__dirname 및 process.cwd()) 사이의 미묘한 차이를 식별하는 데 어려움을 겪는다는 사실을 곧 깨달았습니다.

NodeJS란 무엇입니까?



Node.js는 Chrome의 V8 엔진 위에 구축된 오픈 소스 JavaScript 런타임입니다. 전통적인 JavaScript는 브라우저에서 실행되지만 Node.js를 사용하면 서버, 하드웨어 장치 등에서 JavaScript를 실행할 수 있습니다.

이제 이러한 전역 변수가 무엇이며 작동 방식이 어떻게 다른지 살펴보겠습니다.

__이름:



현재 모듈의 디렉토리 이름을 반환하는 지역 변수입니다. 현재 JavaScript 파일의 폴더 위치를 반환합니다.

프로세스.cwd():



Node.js에는 global이라는 전역 개체가 있고 프로세스 개체는 전역 개체 안에 있습니다.
process.cwd()는 NodeJS 앱이 제공되는 디렉토리의 이름을 제공합니다. 즉, NodeJS 프로세스의 작업 디렉토리입니다.

실제 시연


  • 노드 응용 프로그램에서 루트 디렉토리의 항목 파일로 App.js가 있습니다.app.js



  • 터미널에서 app.js 실행

    node app.js
    


    산출

    ======== process.cwd()=========
    C:\Users\qbentil\blog6
    ======== __dirname=========
    C:\Users\qbentil\blog6
    


  • 다음 프로젝트 구조를 만듭니다
  • .



    try/try.js의 코드 스니펫



    app.js용 코드 스니펫



    run node app.js
    


    산출

    ======== process.cwd() from /try/try.js=========
    C:\Users\User\Desktop\blog6
    ======== __dirname from /try/try.js=========
    c:\Users\User\Desktop\blog6\try
    PS C:\Users\User\Desktop\blog6> 
    


    위의 출력은 파일 try.js의 디렉토리가 blog6/try에 있는 반면 현재 노드 프로세스는 blog6/폴더에서 실행되고 있음을 보여줍니다.

    결론



    위의 범위 변수에도 불구하고 애플리케이션의 어느 시점에서 어떤 변수를 호출할지 알기 위해 다음과 같은 차이점에 유의하는 것이 중요합니다.

    __dirname과 process.cwd()의 차이점




    __dirname
    프로세스.cwd()


    소스 코드 파일이 포함된 디렉토리의 디렉토리 이름을 반환합니다.
    NodeJS 프로세스가 제공되는 현재 작업 디렉토리의 이름을 반환합니다.

    현재 디렉토리에 따라 다릅니다.
    호출 노드 명령에 따라 다릅니다.

    각 모듈에 로컬입니다.
    노드의 전역 개체입니다.


    NodeJS 개발자로서 이러한 변수를 사용하는 방법을 아는 것은 때때로 매우 혼란스럽고 앱에서 불필요한 버그를 유발할 수 있으므로 매우 중요합니다.

    행복한 해킹!

    여기 벤틸🚀
    내 콘텐츠가 마음에 들면 여기에서 작업을 계속할 수 있도록 지원할 수 있습니다.👇



    아래 의견 상자에 질문이나 제안 사항을 알려주십시오.

    좋은 웹페이지 즐겨찾기