Функция не найдена в модуле - PullRequest
0 голосов
/ 27 апреля 2020

Предположим, у вас есть файл модуля, подобный этому:

authService. js

import { Screen } from 'quasar'
import * as authPopup from 'src/services/auth/authPopup'
import * as authRedirect from 'src/services/auth/authRedirect'

const loginMethod = Screen.lt.sm ? 'redirect' : 'popup'

export const auth = (loginMethod === 'popup')
  ? { loginMethod, authPopup }
  : { loginMethod, authRedirect }

Если было бы здорово, если бы его можно было использовать следующим образом:

потребитель. js

import { auth } from 'src/services/auth/authService'

const getProfile = () => {
  if (!auth.getAccount()) { return Promise.reject(new Error('no logged on user')) }

  console.log('loginMethod ', auth.loginMethod)
}

Но он ошибочно говорит, что auth.getAccount() не является функцией. Это почему? Мы явно экспортируем auth со всеми функциями и строку в файле authService.js.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 27 апреля 2020

Полагаю, вы намеревались сделать

export const auth = (loginMethod === 'popup')
  ? { loginMethod, ...authPopup }
  : { loginMethod, ...authRedirect };

, чтобы экспортированный объект auth фактически содержал все методы из соответствующего импортированного объекта пространства имен, а не свойства .authPopup или .authRedirect. Или, в качестве альтернативы, вы можете написать:

export const auth = { loginMethod: Screen.lt.sm ? 'redirect' : 'popup' };
Object.assign(auth, auth.loginMethod === 'popup' ? authPopup : authRedirect);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...