Reactjs 巴贝尔投掷支持实验语法';jsx&x27;isn';t当前已启用
我开始使用Jest和Ezyme为react应用程序编写新的单元测试用例,当尝试使用Jest运行测试用例时,比如Reactjs 巴贝尔投掷支持实验语法';jsx&x27;isn';t当前已启用,reactjs,jestjs,enzyme,babeljs,Reactjs,Jestjs,Enzyme,Babeljs,我开始使用Jest和Ezyme为react应用程序编写新的单元测试用例,当尝试使用Jest运行测试用例时,比如“test”:“Jest--watch”“test”:“react scripts test”测试通过babel让运行者理解react语法 并且一直在使用babel一步一步地进行设置,但是这个错误对实验语法“jsx”的支持目前还没有启用阻止我继续。正如在一些线程中所建议的那样,我一直在尝试使用npm安装--save dev@babel/plugin transform react jsx
“test”:“Jest--watch”
“test”:“react scripts test”测试通过babel让运行者理解react语法
并且一直在使用babel一步一步地进行设置,但是这个错误对实验语法“jsx”的支持目前还没有启用
阻止我继续。正如在一些线程中所建议的那样,我一直在尝试使用npm安装--save dev@babel/plugin transform react jsx
,并尝试将相同的插件添加到babel配置中,如下面的package.json文件所示,但仍然没有成功。
这是我的package.json
{
“名称”:“多主题应用程序”,
“版本”:“0.1.0”,
“私人”:没错,
“依赖项”:{
“@material ui/core”:“^3.9.0”,
“@material ui/图标”:“^3.0.2”,
“axios”:“^0.18.0”,
“巴别塔插件转换导出扩展”:“^6.22.0”,
“jest css模块”:“^2.1.0”,
“反应”:“^16.8.1”,
“react dom”:“^16.8.1”,
“react redux”:“^6.0.0”,
“反应路由器dom”:“^4.3.1”,
“反应脚本”:“2.1.5”,
“redux”:“^4.0.1”,
“redux thunk”:“^2.3.0”
},
“脚本”:{
“开始”:“反应脚本开始”,
“构建”:“反应脚本构建”,
“测试”:“反应脚本测试”,
“弹出”:“反应脚本弹出”
},
“eslintConfig”:{
“扩展”:“反应应用程序”
},
“浏览者”:[
">0.2%",
“没有死”,
“不是ie查看错误,它似乎无法加载react的预设。切换到配置文件,并将babel的配置从package.json移动到它。
示例文件如下所示,位于package.json的同一级别,名为babel.config.js
module.exports = function (api) {
const presets = [
'@babel/preset-env',
'@babel/preset-react',
'@babel/preset-flow'
];
const plugins = [
'@babel/plugin-transform-runtime',
];
/** this is just for minimal working purposes,
* for testing larger applications it is
* advisable to cache the transpiled modules in
* node_modules/.bin/.cache/@babel/register* */
api.cache(false);
return {
presets,
plugins
};
};
如果这个问题与使用玩笑有关
您的package.json
的jest配置应该如下所示
用打字稿-
"jest": {
...
"transform": {
"^.+\\.(ts|tsx|js|jsx)$": "ts-jest"
},
...
}
"jest": {
...
"transform": {
"^.+\\.(js|jsx)$": "babel-jest"
},
...
}
用js-
用打字稿-
"jest": {
...
"transform": {
"^.+\\.(ts|tsx|js|jsx)$": "ts-jest"
},
...
}
"jest": {
...
"transform": {
"^.+\\.(js|jsx)$": "babel-jest"
},
...
}
我通过删除builds/
文件夹解决了这个问题,该文件夹是由npm run build
在与我的package.json
相同的级别上创建的。在删除之后,我再次运行了jest--coverage
,它成功了。
它也可能与有关。你弹出你的应用程序了吗?如果没有,我认为任何附加的配置都不会生效。你实际上没有在你的软件包文件中显示jest的用法——请注意,请给出一个正确的提示。@jornsharpe对不起,我没有收到这个你弹出你的应用程序了吗?
很抱歉,我是全新的对于单元测试,你能给我推荐一些代码示例吗?如果你正在使用react脚本
你是否使用create-react-app创建了你的应用程序?如果是,在开始添加你自己的随机配置之前,你是否运行了包文件中显示的弹出命令?那么我建议不要尝试修改设置,除非你是ally知道你在做什么,要么坚持提供的,创建你自己的,要么。@Venki你应该始终使用Babel with Jest,至少用于React测试,因为React应用程序不使用有效的JS。不清楚为什么你开始使用Jest
命令而不是React脚本
React脚本测试
使用预配置红色Jest设置。如果您真的需要自定义Jest,您需要弹出,您将获得CRA使用的Jest配置,您可以进行扩展。从头开始为CRA这样的复杂设置编写Jest配置并不是最舒适的开始方式。不幸的是,情况并非如此,问题是特定于Jest配置中的Babel。@Rain是的,这是在使用Jest时,react是否与babel配置相关。@EstusFlask,你能教我什么时候在Jest中使用和不使用babel吗?实际上,没有使用babel,测试用例也成功通过了,但出于好奇,我只是将react脚本
修改为Jest
,然后尝试按照中的建议运行npm测试
udemey在线课程开始让babel头疼。Estus,你能帮我回答上面的问题吗?非常感谢,这救了我的命。这是许多错误的解决方案,比如意外的保留字“interface”,实验语法“jsx”,等等。这是这个问题的最佳答案