2013-05-23 4 views
6

나는 명령 행에서 실행할 수있는 간단한 프로그램을 가지고있다. 이 프로그램은 마크 다운 파일의 실시간 미리보기 용입니다. 내가노드 - 웹킷에서 작업 디렉토리를 얻는 방법

cat $NW/nw marknow.nw > marknow 

와 응용 프로그램을 포장하고 다른 위치에서 실행 해요 :

./build/marknow ../relative/path/to/file.md 

나는 현재 작업 디렉토리를 얻을 수 없습니다.

process.cwd() 

/tmp/something ???

node-webkit에서 작업 디렉토리를 얻으려면 어떻게해야합니까? ./build/marknow ../relative/path/to/file.md이라는 디렉토리. CWD가 작동하지 않는 경우에 당신이 시도 할 수

+1

process.cwd()는 내가 찾고있는 절대 경로를 반환합니다. 아마도 이전 버전의 node-webkit일까요? – Maslow

+0

@Maslow :이 경우 사용자가 프로세스를 시작한 디렉토리 (일반적으로 앱이 설치된 디렉토리와 다른 디렉토리)라는 용어의 전통적인 의미에서 cwd를 찾지 못했을 것입니다. . 이거 확인할 수 있니? – LOAS

답변

6

나는 cwd 2 다른 의미를 점점 생각 웹킷 커뮤니티 seems to be using the 1st

내가 틀렸다면 나를 교정하십시오, bu 사용자가 앱을 호출 할 때 두 번째 경로를 찾고 있다고 생각합니다.

다른 답변에서 지적한 바와 같이

process.env.PWD

+1

프로젝트를 실행 파일로 빌드 할 때 process.env.PWD를 사용할 수있는 것 같지 않습니다. – squaretone

+0

@ 스퀘어 톤 : Windows 빌드에서 이것을 관찰 했습니까? process.env.PWD에 내가 응용 프로그램을 시작했을 때의 디렉토리 경로가 포함 된 Mac 용 빌드를 만들었습니다. – LOAS

+0

기억이 안납니다. 나는 둘 다 개발했지만 주로 Windows를 기반으로 개발했습니다. – squaretone

13

또 다른 옵션은 이런 식으로 실행 디렉토리를 받고있다 :

var path = require('path'); 
var execPath = path.dirname(process.execPath); 

이 당신에게 EXE 파일의 실행 디렉토리를 받아야합니다. cwd는 node-webkit이 각 실행시 temp 디렉토리에서 파일을 여는 방법을 처리하기 때문에 temp 디렉토리를 가져옵니다.

  1. 사용자가 쉘 스크립트 I can see the 2nd meaning applied에서

에서 응용 프로그램을 실행 앱을

  • 디렉토리를 살고 디렉토리하지만, 노드 - :

  • +2

    path.dirname (process.execPath)이 현재 작업 디렉토리가 아닌 ./build/ 디렉토리를 가리키고 있습니다. –

    +1

    은 scapes 사용을 피하기 위해'execPath.replace (/ \\/g, "/");' –

    1

    는, 노드 웹킷 잘못된 '현재 작업 디렉토리'와 노드 프로세스를 시작합니다

    는 몇 가지 테스트 후, 나는 마침내 나를 위해 작동하는 방법을 발견 (어쨌든 명령 행 관점에서).

    다른 곳에서 지적했듯이, process.env.PWD에는 실제로 우리가 원하는 것을 포함하고 있습니다 (응용 프로그램이 명령 행에서 시작될 때).

    <script type="text/javascript"> 
        if(process.env.PWD) { 
        process.chdir(process.env.PWD); 
        } 
    </script> 
    

    프레스토 : 간단한 해결 방법은 다음 index.html을에 다음 (또는 초기 실행됩니다 다른 장소)을 할 수 있었다! 이제 process.cwd()는 올바른 것을 반환합니다.

    분명히이 트릭은 명령 줄에서 시작된 응용 프로그램에서만 실제로 작동하지만 다시 응용 프로그램이 명령 줄에서 시작될 때만 필요합니다.

    이 문제에 대한 티켓이 있습니다,하지만 모든 대답이 실패한다면, 이것을 시도 old and dusty

    1

    입니다.

    1. "main.js"파일을 만들고이 코드를 복사하십시오.

      // get child_process module. 
      var childproc = require('child_process'); 
      
      // start process using child_process 
      // with current path string 
      // '__dirname' would be not only path 
      // of 'main.js' but also one of 'app.zip' 
      // because 'main.js' and 'app.zip' have same directory 
      childproc.exec('nw app.zip ' + __dirname); 
      
    2. 당신은 내가 게시

    Node.js를 함께 현재의 경로를

    // get 'nw.gui' module 
    var gui = require('nw.gui'); 
    
    // get arguments that we passed 
    var arr = gui.App.argv; 
    
    // nw app.zip __dirname 
    //   ^argv[0] 
    alert('current path: [' + arr[0] + ']'); 
    
  • 실행 "main.js"을 얻으려면이 코드를 추가합니다 "어떻게 현재 얻을 수 디렉토리 (현재 경로)를 사용하여 노드 - 웹킷 ".

    http://hdnua.tistory.com/16

    이 zip 파일의 디렉토리를 실행됩니다.

  • 관련 문제