2011-06-24 15 views
8

czuję się jakbym brakuje niektórych bardzo podstawowe tutaj ...Pomoc wymagająca moduł npm w node.js

Więc zainstalować bibliotekę npm z npm install somelib. I z tego, co przeczytałem, powinienem był w stanie po prostu zrobić to, ale nie udało mi się znaleźć niczego. Mam katalog node_modules w katalogu głównym mojej aplikacji, ale nie wydaje się, aby go odebrać.

Próbowałem require.paths.push('node_modules'), ale to nie pomaga. Jedyną rzeczą, która wydaje się działać to:

require.paths.unshift('.'); 
var somelib = require('node_modules/somelib/lib/somelib'); 

Co sprawia, że ​​czuję się jak to jest znacznie więcej pracy niż ja rzeczywiście trzeba zrobić, aby załadować bibliotekę npm. Co ja tu robię źle? Myślałem, że instalowanie modułów w aplikacji oznacza, że ​​nie musiałem forsować zmiennych środowiskowych czy ścieżek?

+0

co próbujesz zainstalować? Jaka platforma? – tjameson

+0

Tak, masz rację. Twoim pierwszym przykładem jest to, jak powinno działać. Czy używasz npm 1.0? – Magnar

+1

Jest możliwe, że pakiet 'somelib' nie ma pliku o nazwie' somelib'. Możliwe jest również błędne skonfigurowanie instalacji. – Amadan

Odpowiedz

1

Posiadanie konkretnej nazwy modułu zamiast "somelib" może pomóc ... ale sprawdź plik pakietu package.json. Wyświetl require.paths i porównaj. Przeczytać na węźle module system

4

Jest możliwe, że somelib nie posiada plik main zdefiniowane w ich package.json lub że jest nieprawidłowo odwołuje. Jeśli somelib nie ma wartości main, ale ma wartość directories.lib, można zamiast tego wykonać require('somelib/thefile.js').

Jeśli somelib jest napisane w coffeescript, a Twoja aplikacja nie jest, musisz najpierw uzyskać numer require('coffee-script').

Aktualizacja: jako js2coffee jest coffeescript, Idę z tobą, muszę zrobić to drugie.

+0

Czy można wymagać wszystkich modułów npm na jednym serwerze. plik js ... lub musimy utworzyć oddzielne pliki .... co jest najlepszą praktyką. :) –

Powiązane problemy