2016-05-27 4 views
1

Ich exportiere Router am Ende der Datei und auch eine Funktion exportieren, aber ich kann nur eine von ihnen zu einer Zeit zu arbeiten.Node.js export sowohl Router und Funktion

// weather.js 
var express = require('express'); 
var router = express.Router(); 

refreshWeather(){ 
// Refresh weather... 
} 

exports = router; // It's either this 
exports.refresh = function() { // or this. 
    refreshWeather(); 
    console.log('Done refreshing'); 
}; 

von meinem Haupt-app.js möchte ich in der Lage sein, beides zu tun:

//app.js 
var express = require('express'); 
var app = express(); 

var weather = require('./routes/weather.js'); 

app.use(weather) // I want to be able to use this for routing 
weather.refresh(); // But also be able to call refresh function of weather.js 

Antwort

5

Gibt es Gründe, warum Sie dies nicht nur tun? Dies scheint sauberer zu sein, als eine Funktion innerhalb von Exporten zu definieren und zu versuchen, eine andere Funktion in weather.js aufzurufen.

module.exports = { 
    router:router, 
    refreshWeather:refreshWeather 
} 

Dann in app.js

var weather = require('./routes/weather.js'); 
app.use(weather.router) 
weather.refreshWeather() 

Wenn Sie es auf diese Weise zu tun, nicht wollen, versuchen zu ändern Exporte = Router = Router exports.router. Dann können Sie innerhalb von app.js weather.router aufrufen.