首页 > 解决方案 > 如何在节点js的同一模块文件中使用模块

问题描述

aUtil.js

module.exports = {
    successTrue: function(data) { 
        return { data: data, success: true };
    },
    isLoggedin: async (req, res) { 
        //decoded token in req header
        //if decoded token success, 
        res.json(this.successTrue(req.decoded));
    }
}

test.js 中的那个函数调用

router.get('/check', aUtil.isLoggedin, async (req, res) => { ... })

我想在那个函数中使用上面的函数。

但我不断收到错误。

ReferenceError: successTrue is not defined

我尝试了很多方法。

  1. 插入'const aUtil = require('./aUtil')`
  2. 改成'res.json(successTrue( ... )'

标签: javascriptnode.js

解决方案


使用this

module.exports = {
    successTrue: function() {
      return { foo: 'bar' } 
    },

    isLoggedin: function() {
      console.log(this.successTrue())
    }
}

你正在导出一个对象,所以this引用它自己。

aUtils如果您将其用作中间件,请确保您已绑定,如下所示:

router.get('/check', aUtil.isLoggedin.bind(aUtil), async (req, res) => { ... })


推荐阅读