web-dev-qa-db-ja.com

ES6 Uncaught TypeError:Object(...)は関数ではありません

この関数からPromiseを返しています

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

export default { liab_config }
_

そして、別のファイル内でPromiseを処理しようとしています

_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));
  }
_

ここで私はエラーを取得しています:

Uncaught TypeError:Object(...)は関数ではありません

liab_config().then((response)。その理由は何でしょうか?

5
izengod

オブジェクトリテラルをデフォルトでエクスポートしています。名前付きエクスポートを使用したい

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

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

またはデフォルトのエクスポート

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

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

このようなものにアクセスしているとき

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

それはあなたがのように書かれなければならないデフォルトのエクスポートを求めていることを意味します

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

export { liab_config as default };

またはこのように

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

export default liab_config;

そして、それをデフォルトにしたくない場合は、次のように渡します

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

または

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

export { liab_config };

そしてそれにアクセスする

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