2013-03-01 20 views
8

Mam projekt i uruchamiam go z node main.js/make test itd. Potrzebuję uzyskać ten katalog ze skryptu. Nie tylko z main.js, ale także z dowolnego submodułu. Próbowałem z wtyczką path i __directory, ale otrzymałem ścieżkę bieżącego pliku (na przykład moduł pomocniczy). Próbowałem także require('path').dirname(require.main.filename), ale kiedy uruchamiam make test, otrzymuję nazwę mocha dirname zamiast mojego katalogu projektu. Jaki jest najłatwiejszy sposób rozwiązania tego problemu?Pobieranie katalogu, z którego wykonywano plik node.js

Odpowiedz

5

__dirname podaje ścieżkę do pliku.

0

require.cache przechowuje każdy załadowany moduł i towarzyszące jej wartości importowanych, moduł nadrzędny, Moduły dziecięce, bezwzględna ścieżka pliku itp

wierzę, każdy moduł jest przypisany do obiektu cache przy użyciu jego ścieżki pliku jako klucz pamięci podręcznej, ale prawdopodobnie będziesz chciał to dokładnie sprawdzić, aby się upewnić.

Jeśli tak jest, to coś tak prostego, jak Object.keys(require.cache) da ci tablicę ścieżek plików dla wszystkich modułów. Następnie przeanalizuj każdą ścieżkę w razie potrzeby, aby pobrać informacje o katalogu, których szukasz, ze ścieżki każdego modułu.