Powinieneś zmienić tę linię:
var sqlDb = require('./DBLayer/db.js');
do
var sqlDb = require('./DBLayer/db.js').sqlDb;
lub zmienić tę linię:
exports.sqlDb = sql;
do
exports = sql;
Wyjaśnienie: W węźle, kiedy to robisz:var sqlDb = require('./DBLayer/db.js');
sprawia, że sqlDb jest exports
obiekt.
Więc w swoim kodzie masz exports.sqlDb = sql
. Kompilator ma rację, eksporty nie mają funkcji execute. eksporty mają tylko 1 var, exports.sqlDb
.
Wskazówka bonusowa: Jeśli naprawdę chcesz, aby kod działał bez zmian app.js
możesz dodać to na końcu swojego modułu:
exports.execute=function(){
return sql.execute.call(sql,arguments)
}