2015-07-14 9 views
5

Używam Meteor JS ... I w moim Meteor aplikacji używam węzła kwerendy zawartość różnych katalogów w aplikacji ....process.env.PWD vs process.cwd()

Kiedy Używam process.env.PWD do wysyłania zapytań do zawartości folderu Otrzymuję inny wynik, niż gdy używam process.cwd() do wysyłania zapytań o wyniki do folderu.

var dirServer = process.env.PWD + '/server/'; 
var dirServerFiles = fs.readdirSync(dirServer); 
console.log(dirServerFiles); //outputs: [ 'ephe', 'fixstars.cat', 'sepl_30.se1', 'server.js' ] 

vs

var serverFolderFilesDir = process.cwd() +"/app/server"; 
var serverFolderFiles = fs.readdirSync(serverFolderFilesDir); 
console.log(serverFolderFiles); //outputs: [ 'server.js' ] 

stosując process.cwd() pokazuje tylko 'server.js' w Meteor.

Dlaczego tak jest? Czym różni się process.cwd() od process.env.PWD?

+0

Nie czytałem wszystkich twoich (długich) postów, ale o co w ogóle chodzi? Czy to możliwe, że zmagasz się z układem twoich katalogów podczas rozwoju i po zbudowaniu procesu? Możesz sprawdzić, co zostało zbudowane w '.meteor/local/build'. W przeciwnym razie spróbuj sprecyzować swoje pytanie w skrócie. –

Odpowiedz

8

Są spokrewnione, ale nie są tym samym.

process.env.PWD jest katalogiem roboczym, w którym rozpoczęto proces . To samo dotyczy całego procesu.

process.cwd() to aktualny katalog roboczy bieżący. Odzwierciedla zmiany wprowadzone za pomocą process.chdir().

Możliwe jest manipulowanie PWD, ale może to być bez znaczenia, że ​​zmienna nie jest używana przez nic, tylko dla wygody.

do obliczania ścieżek prawdopodobnie chcesz, aby zrobić to w ten sposób:

var path = require('path'); 
path.resolve(__dirname, 'app/server') 

Gdzie __dirname odzwierciedla katalogu plik źródłowy kod ten jest zdefiniowany w miejscu pobytu. Błędem jest oczekiwać, że cwd() będzie w pobliżu tego. Jeśli proces serwera zostanie uruchomiony z dowolnego miejsca oprócz głównego katalogu źródłowego, wszystkie ścieżki będą niepoprawne za pomocą cwd().