ES6未捕获的TypeError:Object(...)不是函数

时间:2018-07-17 06:35:17

标签: javascript ecmascript-6 es6-promise

我要从此函数返回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));
  }

在这里我得到的错误是:

  

未捕获的TypeError:Object(...)不是函数

在行liab_config().then((response)

。可能是什么原因?

2 个答案:

答案 0 :(得分:4)

访问此类内容

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'

答案 1 :(得分:3)

您正在默认导出对象文字。您要使用命名出口

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'