2012-09-10 17 views
5

Po pierwsze, jestem całkowicie nowym programistą w odniesieniu do Node.js.NodeJS wymagające modułów

Zacząłem tworzyć przykładową aplikację ekspresową i chciałem użyć dodatkowego modułu, aby dowiedzieć się więcej na ten temat. Zainstalowałem przez npm moduł "mysql", wszystko w porządku.

dodałem go na początku aplikacji, na przykład:.

var mysql = require('mysql'); 

teraz, jak już wiesz, express utworzony plik index.js wewnątrz trasach katalogu: chciałbym mieć dostęp do zmiennej mysql do połączenia z db z tego index.js stronie, ale za pomocą polecenia

var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : 'root', 
}); 

oczywiście nie działa, dając „500 ReferenceError: mysql nie jest zdefiniowana”.

Oczywiście, jestem pewien, że muszę przekazać tę zmienną, ale naprawdę nie mam pojęcia, czy dobra dusza może mnie oświecić? Wiem, że to jest bardzo małe i proste rzeczy, ale próbowałem to już, i nie wydaje się działać:

... app.get('/', routes.index, mysql); ... 

i na index.js:

exports.index = function(req, res, mysql){ ... 

Odpowiedz

5

W node.js, powinieneś require modułów w plikach, musisz ich używać; Tak więc, jeśli chcesz skorzystać z pakietu mysql w pliku routes/index.js, w górnej części tego pliku, wykonaj

var mysql = require('mysql'); 

może skończyć wymagające moduł w więcej niż jednym pliku; jest to normalne i pod wieloma względami, to dobra rzecz (nie ma problemów przestrzeni nazw, etc.)

Jeśli chcesz dowiedzieć się więcej o modułach i pakietów, może być zainteresowany w tych dwóch screencasts:

0

Przekazanie obiektu mysql przez app.get() byłoby to normalna reakcja, ale jestem pewien, że jesteś ov er-myślenie to.

To tak proste, jak dodanie var mysql = require('mysql'); u góry routes/index.js. W rzeczywistości może się okazać, że nie musisz nawet wymagać mysql w app.js, jeśli wszystkie interakcje z bazą danych są wykonywane na twoich trasach.