Reactjs 如何让Jest忽略命名ESM默认导出的未定义错误

Reactjs 如何让Jest忽略命名ESM默认导出的未定义错误,reactjs,jestjs,export,default,Reactjs,Jestjs,Export,Default,我有一个React应用程序,我目前正在用Jest编写测试。这是一个包含100多个组件的大型项目,其中一些组件使用此语法作为默认组件导出 export default SomeAwesomeComponent = () => { return ( <div> ... </div> ) } 导出默认SomeSomeComponent=()=>{ 返回( ... ) } 这从未影响到简单地运行应用

我有一个React应用程序,我目前正在用Jest编写测试。这是一个包含100多个组件的大型项目,其中一些组件使用此语法作为默认组件导出

export default SomeAwesomeComponent = () => {
    return (
        <div>
            ...
        </div>
    )
}
导出默认SomeSomeComponent=()=>{
返回(
...
)
}
这从未影响到简单地运行应用程序,但是当我运行jest,jest--watchAll时,我得到了该组件的一个错误ReferenceError:SomeAwesomeComponent没有定义。我理解命名导出和默认导出之间的区别,以及如何使用它们。我可以用任何一种方法使它工作

A。删除名称,保留“默认导出”位

export default () => {
    return (
        <div>
            ...
        </div>
    )
}
导出默认值()=>{
返回(
...
)
}

B.将SomeAsomeComponent声明为常量,然后将其用作文件末尾的默认导出

const SomeAwesomeComponent = () => {
        return (
            <div>
                ...
            </div>
        )
    }

export default SomeAwesomeComponent;
const somesomecomponent=()=>{
返回(
...
)
}
导出默认的somesomecomponent;


考虑到有这么多组件,不是全部都作为默认导出,而是相当多的导出,检查并修复每个组件将是非常繁琐的。我的意思是,如果需要,我会这样做,最终也会这样做,但为了时间起见,我是否可以配置Jest在运行测试时忽略此错误?

应该为命名导出提供名称,但不是默认导出,因为它是默认的

SomeAwesomeComponent = () => ...;

export default SomeAwesomeComponent;
如果没有
SomeAwesomeComponent
变量声明,它会尝试将其分配给全局变量。分配给未声明的全局会导致中出现错误,在现代JavaScript环境中默认情况下会启用该错误。在草率模式下,这会用所述标识符污染全局范围,并可能意外地覆盖全局变量

此语法错误,无法按预期工作。Jest本身并不强制严格模式,它可能由用于传输应用程序的工具链启用,例如Babel。在脚本中启用严格模式后,将无法禁用它。如果错误发生在多个位置,则需要修复所有位置。这可以通过IDE中的正则表达式替换或其他方式完成

这是一个较短的修复:

export default () => ...;
它不提供可用于调试的函数
name

这是一个较长的修复:

const SomeAwesomeComponent = () => ...;

export default SomeAwesomeComponent;
export
不一定要移动到文件末尾,但它应该在
somesomecomponent
声明之后发生

const SomeAwesomeComponent = () => ...;

export default SomeAwesomeComponent;