如何在其他js文件中使用导出对象

时间:2019-01-30 15:36:21

标签: node.js express

这里是带类并导出的user.js文件

class User {

        static async select() {
          const selectResult = await usersDAL.listUsers();
          return camelizeKeys(selectResult);
      }
    }

module.exports.User = User;

我要在usersApi文件中使用

router.get('/',(req, res) =>{

    let userList = new  User().select();
    res.send(userList);

});

错误显示

(intermediate value).select is not a function

请帮助我

3 个答案:

答案 0 :(得分:1)

※首先,如果可以的话,应该使用更新的Node.js 6.0版。

您可以按module.exports导出对象,按require导入对象。

如何导出

class User {

    static async select() {
      const selectResult = await usersDAL.listUsers();
      return camelizeKeys(selectResult);
  }
}

module.exports = User;

如何导入

const User = require('../model/user') // this path is dummy.
router.get('/', async (req, res) =>{

    let userList = await User.select();
    res.send(userList);
});

User.select()是一种用作异步方法的方法。 您应该包装Promise-block或使用async-await语句。

对不起,我的英语,我没有执行上面的代码。 可能效果不好。

答案 1 :(得分:0)

像这样使用require

const User = require('./user.js').User

./user.js路径假定user.js文件与usersApi在同一目录中。

话虽这么说,您可能只想导出User

user.js

// ... rest of file

module.exports = User;

usersApi.js

const User = require('./user.js')

答案 2 :(得分:0)

根据您的问题和user.js文件的类图

class User {

        static async select() {
          const selectResult = await usersDAL.listUsers();
          return camelizeKeys(selectResult);
      }
    }

module.exports.User = User;

您要导出并在usersApi文件中使用。这样,您可以使用

const User = require('.user');

router.get('/', async (req, res) =>{

    let userList = await User.User.select();
    res.send(userList);
});

因为这样可以将User对象导出到user.js文件(例如:module.exports.User = User)中,所以需要User.User.select()。您应该知道的另一信息是,应该在async或promise方法内部调用静态async方法。因此,我使用await User.User.select()