Node.js 无法在NodeJs中要求类?

Node.js 无法在NodeJs中要求类?,node.js,es6-class,Node.js,Es6 Class,我有两个文件: mysqlDAOFactory.js: var mysql = require('mysql'); var mysqlUserDAO = require('./mysqlUserDAO'); var mysqlSessionDAO = require('./mysqlSessionDAO'); class mysqlDAOFactory { static createConnection() { var connection = mysql.crea

我有两个文件:

mysqlDAOFactory.js:

var mysql = require('mysql');
var mysqlUserDAO = require('./mysqlUserDAO');
var mysqlSessionDAO = require('./mysqlSessionDAO');


class mysqlDAOFactory {

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

    static getDbInstance() {
        return mysql;
    }

    getUserDAO() {
        return new mysqlUserDAO();
    }
    getSessionDAO() {
        return new mysqlSessionDAO();
    }
}

module.exports = mysqlDAOFactory;
var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var bcrypt = require('bcryptjs');
var preparedStatements = require('./preparedStatements');

class mysqlUserDAO {
    constructor() {
        this.connection = mysqlDAOFactory.createConnection();
        this.mysql = mysqlDAOFactory.getDbInstance();
    }
}

module.exports = mysqlUserDAO;
var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var UserDAO = mysqlDAOFactory.getUserDAO();
mysqlUserDAO.js:

var mysql = require('mysql');
var mysqlUserDAO = require('./mysqlUserDAO');
var mysqlSessionDAO = require('./mysqlSessionDAO');


class mysqlDAOFactory {

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

    static getDbInstance() {
        return mysql;
    }

    getUserDAO() {
        return new mysqlUserDAO();
    }
    getSessionDAO() {
        return new mysqlSessionDAO();
    }
}

module.exports = mysqlDAOFactory;
var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var bcrypt = require('bcryptjs');
var preparedStatements = require('./preparedStatements');

class mysqlUserDAO {
    constructor() {
        this.connection = mysqlDAOFactory.createConnection();
        this.mysql = mysqlDAOFactory.getDbInstance();
    }
}

module.exports = mysqlUserDAO;
var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var UserDAO = mysqlDAOFactory.getUserDAO();
当我运行文件test.js:

var mysql = require('mysql');
var mysqlUserDAO = require('./mysqlUserDAO');
var mysqlSessionDAO = require('./mysqlSessionDAO');


class mysqlDAOFactory {

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

    static getDbInstance() {
        return mysql;
    }

    getUserDAO() {
        return new mysqlUserDAO();
    }
    getSessionDAO() {
        return new mysqlSessionDAO();
    }
}

module.exports = mysqlDAOFactory;
var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var bcrypt = require('bcryptjs');
var preparedStatements = require('./preparedStatements');

class mysqlUserDAO {
    constructor() {
        this.connection = mysqlDAOFactory.createConnection();
        this.mysql = mysqlDAOFactory.getDbInstance();
    }
}

module.exports = mysqlUserDAO;
var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var UserDAO = mysqlDAOFactory.getUserDAO();
程序无法识别mysqlUserDAO.js中类的构造函数中的变量mysqlDAOFactory,尽管我以前需要这个变量。 有人能解释一下为什么会发生这种事吗


我已经检查了您的cod,您犯了循环依赖的错误,因为您没有运行代码

我对mysqlSession文件有临时注释,因为您没有发布MySQL会话文件

请参阅正在运行的示例,然后也请查看链接。

test.js:

mysqlUserDAO.js

mysqlDAOFactory.js


我觉得这条路不对。你能检查一下吗?路径是正确的,因为我已经在构造函数中分配了变量(var mysqlDAOFactory=require('./mysqlDAOFactory.js'),它可以工作。但我想知道为什么我把它放在外面时它不起作用。@SnapeSeverus@SnapeSeverus请检查代码,让我知道它对您是否起作用?@SnapeSeverus请检查我的答案很高兴帮助您,让我知道它是否能解决您的问题,如果不能,那么仍然可以帮助您找到解决方案?