Javascript ESLint在使用默认导出功能时发出投诉

Javascript ESLint在使用默认导出功能时发出投诉,javascript,eslint,Javascript,Eslint,我定义了一个函数,如下所示 export default const myFunc = () => { // Do stuff } 然而,埃斯林特抱怨说,康斯特 解析错误:仅允许表达式、函数或类作为默认导出 有趣的是,如果我删除default关键字,ESLint不会有任何抱怨 为什么解析函数失败?后面的导出默认值必须是表达式或函数声明。变量的声明不是表达式;它是一个独立的语句,所以不允许您将它放在任何位置。(类似地,if(const foo='bar')也不被允许;那里只允许一个

我定义了一个函数,如下所示

export default const myFunc = () => {
    // Do stuff
}
然而,埃斯林特抱怨说,康斯特
解析错误:仅允许表达式、函数或类作为默认导出

有趣的是,如果我删除
default
关键字,ESLint不会有任何抱怨


为什么解析函数失败?

后面的导出默认值必须是表达式或函数声明。变量的声明不是表达式;它是一个独立的语句,所以不允许您将它放在任何位置。(类似地,
if(const foo='bar')
也不被允许;那里只允许一个表达式。)这不是ESLint问题,而是JavaScript语法问题

将代码更改为:

export default () => {
  // Do stuff
};
如果您还需要对函数进行命名,以便在文件中的其他位置引用该函数,则必须分两步对其进行命名和导出(如果需要为箭头函数):


另一方面,命名导出允许在导出变量的同时为变量赋值,这就是为什么允许
export const…
。(但在执行
导出默认值
操作时,您并没有分配给独立变量)

接下来的
导出默认值
必须是表达式或函数声明。变量的声明不是表达式;它是一个独立的语句,所以不允许您将它放在任何位置。(类似地,
if(const foo='bar')
也不被允许;那里只允许一个表达式。)这不是ESLint问题,而是JavaScript语法问题

将代码更改为:

export default () => {
  // Do stuff
};
如果您还需要对函数进行命名,以便在文件中的其他位置引用该函数,则必须分两步对其进行命名和导出(如果需要为箭头函数):

另一方面,命名导出允许在导出变量的同时为变量赋值,这就是为什么允许
export const…
。(但当您导出默认值时,您并没有分配给独立变量)