javascript - "Home"不是 Node JS 上的构造函数

标签 javascript node.js ecmascript-6

我正在使用 consign 自动加载我的应用程序模型、路由等...我有一个以 ES6 风格建模的模型,当我实例化她时,它会抛出此错误 TypeError: app.src.models .Home 不是构造函数 我尝试过使用ES5风格但没有区别。委托(delegate)创建的对象与内部模型一起,但我无法访问。

这就是我的类(class):

/*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
}

看: 服务器.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;

并且控制台正确返回我在 server.js: { 'home.model': [Function: Home] }

当我从路线到达时,它不断向我显示 app.src.models 有数据, 控制台输出: 我在 home.js 上,仍然有数据 + { '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() 并且它抛出了相同的错误

最佳答案

导出您的 Home 类:

module.exports = { Home };

并导入/使用它:

const { Home } = require('path/to/Home.js');
const home = new Home();
home.getHomeData(...)

关于javascript - "Home"不是 Node JS 上的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55431321/

相关文章:

javascript - 如何对编译后的代码进行单元测试(使用QUnit和Sinon)(闭包编译器高级编译)

javascript - 在输入中禁用空格,并允许后退箭头?

javascript - 何时不使用 defer 属性

javascript - 如何在浏览器窗口中使用 vanilla JavaScript 模拟键盘按下?

javascript - 在 forEach 循环中使用 async/await

node.js - Passport 错误 : Unknown authentication strategy "local"

javascript - Jade 语法缩进错误与 bootstrap

javascript - ES6 中保护 ... of 的正确方法

reactjs - ES6 解构对象中的三元条件

javascript - 如何在类中创建迭代器