2016-05-03 10 views
-2

Ich habe eine Variable, die ich es zwischen Modulen teilen und hinzufügen, daraus entfernen und in einem Node.js-Programm ändern möchte, hier ist was ich getan habe :Node.js: Austausch von Variablen zwischen Modulen über module.exports

shared_storage.js

var locations = {}; 
locations['Brandenburg Gate'] = {latitude: 52.516272, longitude: 13.377722}; 
locations['Dortmund U-Tower'] = {latitude: 51.515, longitude: 7.453619}; 

module.exports = locations; 


var state = new Object(); // Create the object 
state.ready = "r"; 
state.offline = "o"; 
state.loaded = "l"; 


var location_stats = {}; 

location_stats ['Brandenburg Gate'] = state.ready; 
location_stats ['Dortmund U-Tower'] = state.loaded; 

module.exports = location_stats ; 

mymodule.js

var spots= require('./shared_storage').locations; 
console.log(spots); 

aber das Ergebnis ist:

undefined

wo ist das Element, das ich auf die Variable in der shared_storage.js hinzufügen?

+0

Können Sie bitte Ihre vollständige shared_storage.js veröffentlichen? ob Sie Konstruktor erstellt haben? Wenn ja, exportieren Sie den Konstruktor. – Subburaj

Antwort

1

ändern diese var spots= require('./shared_storage').locations;

Um diese

var spots= require('./shared_storage')

Der Grund, warum Sie Objekt als Modul exportieren, so dass Sie nicht brauchen, um Module Eigenschaft zugreifen, weil es hat keine eigene Eigenschaft :)

Nun, das ist behoben, müssen Sie Ihre Implementierung überdenken. Den Status moduleübergreifend über ein anderes Modul zu teilen, ist einfach, aber nicht gut. Für einige Gründe:

  1. Server Absturz/Neustart
  2. Multiinstanz Service
  3. Es einen schmutzigen Ansatz ist (Speicherleck, schwierig Abstraktion usw.)

besser und einfachste Ansatz wäre, um diese in der Datenbank zu speichern

Verwandte Themen