web-dev-qa-db-fra.com

ES6 UnCaught TypeError: l'objet (...) n'est pas une fonction

Je retourne un Promise de cette fonction

const liab_config = () => {
  return axios.get(`${config.server_url}/fetch_config_liab`);
}

export default { liab_config }

Et essayer de gérer le Promise dans un autre fichier

import liab_config from './utils/kc-adapter'

function set_liab_config(){
  liab_config().then((response) => {
    if(response.data.success){
      let { kc_config_liab } = response.data;
      return kc_config_liab['auth-server-url'];
    }
    else
      return null;
  }).catch(ex => 
    console.log(ex));
  }

Ici, je reçois l'erreur comme:

TypeError non récupéré: l'objet (...) n'est pas une fonction

en ligne liab_config().then((response). Quelle pourrait être la raison?

5
izengod

Vous exportez par défaut un objet littéral. Vous souhaitez utiliser une exportation nommée

const liab_config = …;
export { liab_config as liab_config }
// shorter:
const liab_config = …;
export { liab_config }
// or just:
export const liab_config = …;

avec

import { liab_config } from './utils/kc-adapter'

ou une exportation par défaut

const liab_config = …;
export { liab_config as default }
// or just:
default export const liab_config = …;
// or without the local name:
default export …;

avec

import liab_config from './utils/kc-adapter'
2
Bergi

Lorsque vous accédez à quelque chose comme ça

import liab_config from './utils/kc-adapter'

Cela signifie que vous demandez l'exportation par défaut qui doit être écrite comme

const liab_config = () => {
  return axios.get(`${config.server_url}/fetch_config_liab`);
}

export { liab_config as default };

ou comme ça

const liab_config = () => {
  return axios.get(`${config.server_url}/fetch_config_liab`);
}

export default liab_config;

Et si vous ne voulez pas le faire par défaut, passez-le comme

export const liab_config = () => {
  return axios.get(`${config.server_url}/fetch_config_liab`);
}

ou

const liab_config = () => {
  return axios.get(`${config.server_url}/fetch_config_liab`);
}

export { liab_config };

Et accédez-y comme

import {liab_config} from './utils/kc-adapter'