«Дом» не конструктор на узле JS - PullRequest
0 голосов
/ 30 марта 2019

Я использую consigno для автозагрузки моделей приложений, маршрутов и т. Д. У меня есть модель, которая моделировала в стиле ES6, и когда я ее запускаю, выдает эту ошибку TypeError: app.src.models.Home is not a constructor Я пытался использовать ES5стиль, но без разницы.Объект, который создает груз, находится внутри моделей, но я не могу получить к нему доступ.

Это мой класс:

/*function Home() {

}

Home.prototype.getHomeData = function (conexao, callback) {
    conexao.query('select * from tarefas', callback)
} //IT does not work like the item below, so I will keep using ES6
*/

class Home {
    constructor() {
        console.log('Construi')
    }

    getHomeData(conexao, callback) {
        conexao.query('select * from tarefas', callback)
    }
}
module.exports = function () {
    return Home
}

Посмотрите: Server.js:

var express = require('express'),
    bodyparser = require('body-parser'),
    app = express();
var consign = require('consign');
consign()
    .include('./src/routes')
    .then('./src/config/db.js')
    .then('./src/models')
    .into(app);
console.log("I'm on server.js: ", app.src.models)
app.use(bodyparser.urlencoded({ extended: true }));
app.listen(3000, function () {
    console.log("Servidor ON");
});
module.exports = app;

и консоль вернётся правильно I'm on server.js: { 'home.model': [Function: Home] }

Когда яполучить от маршрута Он продолжает показывать, что app.src.models имеет данные, вывод на консоль: I'm on the home.js and still have data + { 'home.model': [Function: Home] }

Но когда я пытаюсь создать экземпляр класса, я выбрасываю приведенную выше ошибку ...

module.exports = function (app) {
    app.get('/', function (req, res) {

       console.log("I'm on the home.js and still have data +", app.src.models)
        var conexao = app.src.config.db()
        var homeData = new app.src.models.Home();

        homeData.getHomeData(conexao, (err, result) => {
            if (err) {
                res.json(err)
            } else {
                res.json(result)
            }
        })
    });
} 

если я попробую следующее, консоль будет неопределенной:

console.log("I'm on the home.js and still have data +", app.src.models.Home)

Вот мое репо, если вы хотите https://github.com/tiagosilveiraa/PM_API

Ориентировочно 1:

Вкл.класс Home я сделал module.exports = new Home() и выдает ту же ошибку

1 Ответ

2 голосов
/ 30 марта 2019

Экспортируйте свой домашний класс как таковой:

module.exports = { Home };

И импортируйте / используйте его как таковой:

const { Home } = require('path/to/Home.js');
const home = new Home();
home.getHomeData(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...