导入节点js错误

时间:2017-01-23 22:30:32

标签: javascript node.js

如何在module.exports中导入此代码?

我在节点js和js中都很新。 我希望这段代码可以在其他路线中使用

 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()
    }
  }
}

如何导出?

我是这样的:

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()
        }
      }
    }

我也试试:

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()
    }
  }
}
}

但是当我尝试在get请求中使用它时:

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

它带来:

TypeError: expCache.cache is not a function

此致

2 个答案:

答案 0 :(得分:1)

如果您希望能够拨打ALTER TABLE,则需要导出对象:

expCache.cache

但是,如果您想保持导出的模块不变,请改为调用它:

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

答案 1 :(得分:1)

尝试

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

您已经导出了缓存功能,而不是包含它的对象(这是您尝试将其用于路由器的方式)。