Reactjs 巴贝尔投掷支持实验语法';jsx&x27;isn';t当前已启用

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

我开始使用Jest和Ezyme为react应用程序编写新的单元测试用例,当尝试使用Jest运行测试用例时,比如
“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”,等等。这是这个问题的最佳答案