2013-12-07 7 views
15
module.js:340 
    throw err; 
     ^
Error: Cannot find module './models/todo' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (C:\Users\Basel\Desktop\Todo List\routes\api.js:1:74) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 

C:\Users\Basel\Desktop\Todo List> 

Dlaczego ta aplikacja nie chce się uruchomić? Próbowałem już globalnej instalacji npm.Nie można znaleźć modułu w Nodejs

+0

Gdzie jest folder 'models'? – matth

+1

Musisz podać więcej szczegółów. Czy masz plik 'todo.js' w katalogu' models', który jest na tym samym poziomie, co plik, który wywołuje 'require'? – JohnnyHK

+0

Tak. Pierwotnie nazwałem to todo. Dokonałem refaktoryzacji i zmieniłem tytuł na todos.js. Później zmieniłem ścieżkę na moich trasach, aby odzwierciedlić zmianę (do ./models/todos "), ale to też nie zadziałało. – user2993058

Odpowiedz

29

W ./models/todo, termin oznacza, że ​​węzeł będzie wyglądać w folderze samo że api.js znajduje, który będzie szukać \Todo List\routes\models\todo.js. To nie zaczyna się od katalogu głównego aplikacji. Aby tego wymaga, trzeba nam dwa okresy, aby przejść na wyższy poziom, a następnie określ ścieżkę do aplikacji, a także:

var todo = require('../app/models/todo'); 
+0

w moim przypadku węzeł analizuje .../jak to jest w var todo = require ('../ app/models/todo'); więc wyjście byłoby ../app/models/todo nie nadrzędne/app/models/todo! –

14

być może nie ustawić wartość systemową: NODE_PATH; powinien wskazywać na lokalizację twojego globalnego modułu;

w systemie Linux: export NODE_PATH=/usr/local/lib/node_modules/ działa dobrze dla mnie;

-1

w moim przypadku nazwa pliku podana w moim żądaniu jest błędna. Miałem plik moich modeli o nazwie posts.js i używałem require ("./ models/post"). Zadziałało po tym, jak zmieniłem go na wymagany ('.models/posts')