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

ize*_*god 4 javascript ecmascript-6 es6-promise

Promise从这个函数返回一个

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

export default { liab_config }
Run Code Online (Sandbox Code Playgroud)

并尝试处理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));
  }
Run Code Online (Sandbox Code Playgroud)

在这里,我得到的错误是:

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

上线liab_config().then((response)。可能是什么原因?

Ber*_*rgi 9

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

const liab_config = …;
export { liab_config as liab_config }
// shorter:
const liab_config = …;
export { liab_config }
// or just:
export const liab_config = …;
Run Code Online (Sandbox Code Playgroud)

import { liab_config } from './utils/kc-adapter'
Run Code Online (Sandbox Code Playgroud)

或默认导出

const liab_config = …;
export { liab_config as default }
// or just:
default export const liab_config = …;
// or without the local name:
default export …;
Run Code Online (Sandbox Code Playgroud)

import liab_config from './utils/kc-adapter'
Run Code Online (Sandbox Code Playgroud)


Shu*_*ala 6

当您访问这样的内容时

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

这意味着您要求的默认出口必须写成

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

export { liab_config as default };
Run Code Online (Sandbox Code Playgroud)

或像这样

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

export default liab_config;
Run Code Online (Sandbox Code Playgroud)

而且,如果您不想将其设置为默认值,则可以通过

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

要么

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

export { liab_config };
Run Code Online (Sandbox Code Playgroud)

并像访问

import {liab_config} from './utils/kc-adapter'
Run Code Online (Sandbox Code Playgroud)