2013-10-15 34 views
7

Napisałem mały moduł, który używa Winston do rejestrowania rzeczy.Nie można znaleźć modułu "winston"

użyłem sudo npm install -g winston (jest na VM ... więc nie jestem zbyt zaniepokojony z sudo itp

Log z KMP:

[email protected] /usr/local/lib/node_modules/winston 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]) 

Kiedy próbuję uruchomić mój moduł w węźle uzyskać:

Error: Cannot find module 'winston' 
    at Function.Module._resolveFilename (module.js:331:15) 
    at Function.Module._load (module.js:273:25) 
    at Module.require (module.js:357:17) 
    at require (module.js:373:17) 
    at Object.<anonymous> (/home/name/Code/neon/neon-js-spike/logger.js:2:9) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:349:32) 
    at Function.Module._load (module.js:305:12) 
    at Module.require (module.js:357:17) 

wersje systemu: ubuntu węzeł v = v0.11.7-pre npm -v = 1.3.8

P.S. Próbowałem tego na moim domowym laptopie (innym ubuntu vm) i pracowałem.

+1

Zawsze możesz zainstalować Winston lokalnie, w tym samym katalogu co twój program. –

+0

instalowanie go działa lokalnie, ale nie rozumiem, jak to się stało z moim innym vm instalującym na całym świecie. Dzięki za pomoc. – hba

Odpowiedz

6

Prawdopodobnie potrzebujesz export NODE_PATH=/usr/local/lib/node_modules, gdzie /usr/local/lib/node_modules jest ścieżką, na której moduły węzłów są instalowane globalnie.

+1

Próbowałem, że nie działa. – hba

+0

To samo działało w przypadku innych modułów, ale nie w tym przypadku – Mark

4

Jeśli sugestia ustawienia ścieżki zajęć nie zadziałała, prawdopodobnie konieczne będzie użycie linku npm. Zobacz: http://blog.nodejs.org/2011/04/06/npm-1-0-link/

Winston goto folderze głównym skrypcie i użyj polecenia:

npm link winston 
+0

W oknach, ale na pewno Uruchom jako Administrator. –

0

W ogóle, brakujące moduły powinny być rozwiązane poprzez ustawienie NODE_PATH jak @fakewaffle mówi. Zakładając, że są zainstalowane oczywiście.

Ale dla winston, to nie działa dla mnie. Z jakiegoś powodu musiałem zaktualizować uprawnienia do plików:

chmod o+rx -R /pathto/node_modules/winston 

Nie wiem, dlaczego uprawnienia zostały ustawione niepoprawnie. To rozwiązanie jest dla Ubuntu, prawdopodobnie działa na inne, ale nie na Windows.

Powiązane problemy