2014-09-14 15 views
8

Próbuję użyć prostego modułu "kolory" do ustawienia cli-kolorów w moich logach, nic specjalnego.node.js nie może znaleźć modułu w tym samym folderze

Cóż, mam moduł o nazwie colors.js w ścieżce ./app/config/colors.js zawartość:

var clc = require('cli-color'); 

var colors = { 
    ok: clc.cyan, 
    error: clc.red.bold, 
    warn: clc.yellowBright, 
    high: clc.white.bgGreen 
}; 

module.exports = colors; 

proste. Cóż, gdy wymagam tego w serwerze server.js (w katalogu głównym projektu, powyżej/app) działa dobrze, ale gdy próbuję go użyć w ./app/config/db.js, powoduje to błąd:

Error: Cannot find module './app/config/colors.js' 
    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> (/home/nano/Dev/bears-api/app/config/db.js:3:14) 
    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) 
14 Sep 10:21:00 - [nodemon] app crashed - waiting for file changes before starting... 

Dlaczego jeśli działa on w server.js?

+0

musisz nam pokazać, że nie udało się – soulcheck

Odpowiedz

12

Prawdopodobnie moduł wymaga użycia ścieżki względnej.

Ścieżki względne są rozwiązywane w odniesieniu do wymaganej lokalizacji modułu.

Cytowanie docs

A module prefixed with './' is relative to the file calling require(). That is, circle.js must be in the same directory as foo.js for require('./circle') to find it.

Więc jeśli zrobił

var whatever = require('./app/config/colors.js'); 

wewnątrz modułu znajduje się w ./app/config/ następnie węzeł będzie szukać ./app/config/app/config/colors.js i niepowodzeniem.

Jeśli zarówno wymagająca i wymaga modułu znajdują się w tym samym katalogu, wystarczy użyć:

var whatever = require('./colors.js'); 

lub nawet krócej:

var whatever = require('./colors'); 
+0

Dzięki! to było wszystko – Nano

0

Moduł powinien być w „node_modules” Folder do niego dostęp jak opisałeś.

Powiązane problemy