记录一个学习 jest 的过程中,遇到的bug。 使用create-react-app创建的项目。测试导入的模块,模拟axios总是报如下的错误
原因是因为jest是运行在node环境中的,不支持es6语法。** axios1.x 现在只发出一个 ESM 模块,而不再是一个 CJS 模块。**
下面看看文心一言对这两种模块的解释。
ESM(ES Modules)是ECMAScript 6(也称为ES2015)的一部分,是JavaScript中的一种标准化的模块系统。它支持静态分析和异步加载,可以在代码运行时动态加载模块,并且支持树状依赖图和按需加载。ESM使用import和export关键字来导入和导出模块。
CJS(CommonJS)是Node.js中使用的模块系统,也可以在浏览器中使用。它支持动态加载和同步加载,可以在运行时动态加载模块,并且支持循环依赖。CJS使用require和module.exports或exports来导入和导出模块。
总结来说,ESM和CJS的主要区别在于它们的加载方式和语法。
按照小册中的案例,在package.json中配置了也不行。
最好搞了半天。发现后面加个/就可以了,不知道什么原因
最后发现可能和ts,js有关。 再ts的CRA里面,不用加 / 就可以了。而我上面那个项目是js的,就必须得加 /