как использовать объект экспорта в некотором другом файле JS - PullRequest
0 голосов
/ 30 января 2019

Здесь файл user.js с классом и экспортом

class User {

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

module.exports.User = User;

Я хочу использовать в файле userApi

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

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

});

Ошибка отображения

(intermediate value).select is not a function

Пожалуйстапомоги мне

Ответы [ 3 ]

0 голосов
/ 30 января 2019

※ Сначала вы должны использовать более новую версию 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.

Извините, но я не выполняю приведенный выше код.Это может не сработать.

0 голосов
/ 19 февраля 2019

Согласно вашему вопросу и диаграмме классов файла 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 ().Еще одна информация, которую вы должны знать, что статический асинхронный метод должен вызываться внутри асинхронного или обещающего метода.По этой причине я использую await User.User.select ()

0 голосов
/ 30 января 2019

Используя 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...