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