Не можете требовать класс в NodeJs? - PullRequest
0 голосов
/ 26 мая 2018

У меня есть два файла:

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;

mysqlUserDAO.js:

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;

Когда я запускаю файл test.js:

var mysqlDAOFactory = require('./mysqlDAOFactory.js');
var UserDAO = mysqlDAOFactory.getUserDAO();

, программа не распознает переменную mysqlDAOFactory в конструкторе класса в mysqlUserDAO.js , хотяЯ требую эту переменную раньше.Может кто-нибудь объяснить мне, почему это произошло?

приводит к инструменту отладчика Chrome

1 Ответ

0 голосов
/ 26 мая 2018

Я проверил вашу кодировку, и вы допустили ошибку циклических зависимостей из-за того, что вам не удалось запустить код.

У меня есть временный файл комментария mysqlSession, потому что вы не опубликовали файл сеанса MySQL.

Пожалуйста, посмотрите работающий пример, затем просмотрите также ссылку.https://repl.it/@DipakC/SO-50542396cannot-require-a-class-in-nodejs

test.js:

//var mysqlDAOFactory = require('./mysqlDAOFactory');
const mysqlUserDAO = require("./mysqlUserDAO");
let objMysqlUserDAO = new mysqlUserDAO();
console.log("---- ---- ----");
console.log(objMysqlUserDAO);
console.log("---- ---- ----");

mysqlUserDAO.js

var mysqlDAOFactory = require('./mysqlDAOFactory');
var bcrypt = require('bcryptjs');    
class mysqlUserDAO {
    constructor() {
        this.connection = mysqlDAOFactory.createConnection();
        this.mysql = mysqlDAOFactory.getDbInstance();
    }
}   
module.exports = mysqlUserDAO;

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;
    }

    static getUserDAO() {
        return new mysqlUserDAO();
    }
    /* getSessionDAO() {
        return new mysqlSessionDAO();
    } */
}
module.exports = mysqlDAOFactory;
...