eslint:更喜欢默认导出..如何重组我的代码

时间:2018-12-20 07:32:13

标签: javascript eslint es6-modules airbnb

我有以下模块,其中有一个命名函数... eslint(airbnb)出现错误:

 8:1  error  Prefer default export  import/prefer-default-export

我应该如何重组代码以符合此要求?

导出/导入应在代码的开头...

感谢您的反馈

模块

import fetch from 'node-fetch';

const normalize = json => json.categories.map(category => ({
  id: category.catId,
  name: category.catName,
}));

export const getCategories = async () => {
  const response = await fetch(
    'http://mockbin.org/bin/0535d3fb-74f6-43a6-b4d4-461d84795be4',
    {
      method: 'GET',
      headers: { accept: 'application/json' },
    },
  );

  const json = await response.json();

  return normalize(json);
};

1 个答案:

答案 0 :(得分:1)

通常的想法是将命名导出更改为默认导出-使用的语法为export default <something>。默认出口未命名,因此您要么必须删除getCategories

export default async () => {

或者,如果您希望函数位于有用的变量中,则必须提前定义函数,然后将其导出:

const getCategories = async () => {
  const response = await fetch(
    'http://mockbin.org/bin/0535d3fb-74f6-43a6-b4d4-461d84795be4',
    {
      method: 'GET',
      headers: { accept: 'application/json' },
    },
  );

  const json = await response.json();

  return normalize(json);
};
export default getCategories;

(尽管模块/文件名应该是getCategories,但我认为这不是很有用)

上述两种方法也都通过了no-use-before-define规则。