簡體   English   中英

Node.js模塊導入不適用於一個文件,而適用於其他文件

[英]Node.js Module import doesn't Work in one file but in other files

你好我有一個問題

我有一個模塊並創建對象“事件”,然后在我的應用程序中將該對象導出為其他模塊。

但是在我的模塊之一中,它不起作用。 我要保存的變量的值為“ undefined”

我不明白為什么

這是我的開始文件[app.js]

console.log('[Server] run...');
require('./SCAN/Scan');
require('./eventHandler/eventHandler');
require('./database/database');
require('./socket-server/socket-server');
require('./scanner/scanner');

在此文件中,我創建了事件對象

require('./eventHandler/eventHandler');

來自eventHandler的內容

console.log('[Server] eventHandler.js loaded!');
let io = require('./../socket-server/socket-server').io_ex;
let Event = new ( require('events').EventEmitter)();

exports.EventEmitter_ex = Event;

文件套接字服務器:

console.log('[Server] socket-server.js loaded!');

let Scan = require('./../SCAN/Scan').Scan_ex;

// create Server and listen on Port 8181
let app = require('express')();
let server = require('http').Server(app).listen(8181);
let io = require('socket.io')(server);
let EventEmitter = require('./../eventHandler/eventHandler').EventEmitter_ex;

io.on('connection', function (socket) {

    console.log('[Socket] User Connected!');
    if (!Scan.j > 0) {
        return
    }

    // do if user connect

    socket.on('fetchData', function () {
        socket.emit('getFetch', Scan);
        socket.emit('newStatus', Scan.status);
        console.log('[Socket] getFetch Send!');
    });

    socket.on('disconnect', function () {
        console.log('[Socket] User Disconnect');
    });

    //User Registierung

    socket.on('register_user', function (userData) {
        let regExp = /^[A-Za-z0-9]*[A-Za-z0-9]$/;
        console.log('[APP - Registrierung] - Registrierung empfangen!');
        if (!regExp.test(userData.username) && !regExp.test(userData.passwort)) {
            console.log('[APP - Registrierung] - Fehlerhafte Daten von UserData');
            return
        }

        let name = userData.username.toString();
        let passwort = userData.passwort.toString();
        let deviceID = userData.uuid.toString();

        let user = {
            u_name: name,
            u_password: passwort,
            u_uuid: deviceID
        };
    });
});
//----------------------------
exports.io_ex = io;

為什么在以下位置導入未定義:

let EventEmitter = require('./../eventHandler/eventHandler').EventEmitter_ex;

因為您需要eventHandler模塊中的套接字服務器模塊。 這意味着套接字服務器模塊在eventHandler模塊設置其EventEmitter_ex導出的值之前初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM