2017-12-21 11 views
0

나는이이벤트 이미 터를 사용하기 위해 하나의 모듈을 다른 모듈에 요구하는 방법은 무엇입니까?

const express = require('express') 
const app = express() 

app.get('/', (req, res) => res.send('Hello World!')) 

app.listen(3000,() => console.log('Example app listening on port 3000!') 

같은 명시 적 서버 파일을 가지고 있고 내가 알리도록 두 모듈에서 이벤트 이미 터를 사용하려는 tcpserver는

const net = require('net'); 
const lora_packet = require('lora-packet'); 
const dataParser = require('./dataParser'); 

const clients = []; 


net.createServer(function(socket) { 
    socket.name = socket.remoteAddress + ":" + socket.remotePort; 
    clients.push(socket); 


    socket.on('data', function(data) { 
     try { 
      console.log("Buffer sent by terminal : "); 

     }catch(err){ 
      console.log("DATA RECEIVING PRODUCED AN ERROR" + err); 
     } 

    }); 
    socket.on('end', function() { 
     clients.splice(clients.indexOf(socket), 1); 
     //broadcast(socket.name + "has left the cartel.\n"); 
    }); 

    socket.on('error', function (exc) { 
     console.log("ignoring exception: " + exc); 
    }); 



}).listen(8080); 

에 대해 다른 포트를 실행하기위한 파일이 서버 중 하나에서 다른 서버로 변경됩니다. 하지만 내가 직면하고있는 문제는 다른 모듈을 필요로하는 이벤트를 발생시키고 순환 종속성을 생성하지 않는다는 것입니다. 이 문제에 어떻게 접근해야합니까? 순환 종속성에 문제가 있거나 node.js 서버에서 사용할 수 있습니까?

목적을 달성하기 위해 순환 종속성을 해결할 수 있습니까?

+0

조심스럽게 수행하면 원형 디프를 사용할 수 있습니다. 그러나 2 개의 서버 사이에서 단일 이벤트 송신기 역할을하는 세 번째 모듈을 만드는 것을 고려하십시오. –

+0

"신중하게 작성한 경우" 이것에 대해 자세히 설명해 주시겠습니까? –

+0

나는 문서가 나보다 훨씬 더 잘 될 것이라고 믿는다. https://nodejs.org/api/modules.html#modules_cycles –

답변

1

Node.JS에는 순환 종속성을 처리하는 여러 가지 방법이 있지만 동적 요구 사항은 일반적으로 좋지 않은 아이디어입니다. 예측할 수없는 많은 상황이 발생할 수 있습니다. 필요한 모든 모듈을 요구 한 다음 에미 터에서 사용하는 것이 가장 좋습니다.