2017-01-23 4 views
0

Wie kann ich diesen Code in module.exports importieren?Import in Knoten js Fehler

Ich bin ziemlich neu in Knoten js und in js. Ich möchte, dass dieser Code in anderen Routen verwendet werden könnten

cache = (duration) => { 
    return (req, res, next) => { 
    let key = '__express__' + req.originalUrl || req.url 
    let cachedBody = mcache.get(key) 
    if (cachedBody) { 
     res.send(cachedBody) 
     return 
    } else { 
     res.sendResponse = res.send 
     res.send = (body) => { 
     mcache.put(key, body, duration * 1000); 
     res.sendResponse(body) 
     } 
     next() 
    } 
    } 
} 

Wie kann ich es exportieren?

Ich war so etwas wie:

module.exports = cache = (duration) => { 
     return (req, res, next) => { 
     let key = '__express__' + req.originalUrl || req.url 
     let cachedBody = mcache.get(key) 
     if (cachedBody) { 
      res.send(cachedBody) 
      return 
     } else { 
      res.sendResponse = res.send 
      res.send = (body) => { 
      mcache.put(key, body, duration * 1000); 
      res.sendResponse(body) 
      } 
      next() 
     } 
     } 
    } 

Auch versuche ich:

module.export = { 
    cache: function(duration) { 
    return (req, res, next) => { 
    let key = '__express__' + req.originalUrl || req.url 
    let cachedBody = mcache.get(key) 
    if (cachedBody) { 
     res.send(cachedBody) 
     return 
    } else { 
     res.sendResponse = res.send 
     res.send = (body) => { 
     mcache.put(key, body, duration * 1000); 
     res.sendResponse(body) 
     } 
     next() 
    } 
    } 
} 
} 

Aber wenn ich versuche, es in einem Get-Anforderung zu verwenden:

var expCache = require('../../middleware/cache'); 
    router.get('/:sid/fe',expCache.cache(3000),function(req,res) { 

Es bringt:

TypeError: expCache.cache is not a function 

Grüße

+2

* für Schleife mit Git *? Entschuldigung, wo ist der Idiot hier? –

Antwort

1

Sie benötigen ein Objekt zu exportieren, wenn Sie erwarten expCache.cache anrufen zu können:

module.exports = { 
    cache: // your function 
} 

Wenn Sie jedoch Ihre exportierte Modul behalten möchten, wie es ist, nur Anruf es wie folgt statt:

// inside middleware/cache: 
// module.exports = cache = (duration) => { 

var expCache = require('../../middleware/cache'); 

// you can call it as just a function 
router.get('/:sid/fe', expCache(3000), function(req,res) { 
+0

Ich verstehe das. Aber es markiert etwas im = Zeichen: SyntaxError: Unerwartetes Token => – arnoldssss

+0

mah Fehler danke – arnoldssss

1

Versuchen

var expCache = require('../../middleware/cache'); 
router.get('/:sid/fe',expCache(3000),function(req,res) {.. 

Sie exportieren Ihre Cache-Funktion bereits, nicht ein Objekt, das sie enthält (auf diese Weise versuchen Sie, sie für Ihren Router zu verwenden).

+0

Ich habe das versucht, aber funktioniert nicht ... es wird nicht durch die Datei – arnoldssss