【问题标题】:Jest with React Native 57 not working with ES7 syntaxReact Native 57 的玩笑不使用 ES7 语法
【发布时间】:2018-10-17 01:06:26
【问题描述】:

我已经用

更新了 package.json

"^.((?!Saga).)*\.js$": "/node_modules/react-native/jest/preprocessor.js",

但是,每个使用 ES7 语法编写的组件都停止工作,例如

export default class Test extends Component {
  state = { test: '' }

  testFunc = () => {}
}

【问题讨论】:

  • 错误是什么?箭头函数中的意外标记?
  • @KyawSiesein 该组件根本无法通过酶的浅层渲染。所以我得到了 TypeError: Cannot read property 'default' of undefined。如果我从 es7 中删除所有内容,组件就会开始生成快照。

标签: reactjs react-native jestjs


【解决方案1】:

通过更新我的 .babelrc 解决

{
    "presets": ["module:metro-react-native-babel-preset"],
    "env": {
        "test": {
            "presets": ["react-native"]
        }
   }
}

【讨论】:

  • 我遇到了这个问题。你能提供你的 package.json 和任何其他相关信息吗?您建议的更改没有为我解决问题。
  • @AndrewHenderson (1)我使用 .babelrc.js 而不是 .babelrc 并添加以下 sn-p: ``` let presets = ["module:metro-react-native-babel-preset" ];让插件 = []; if (process.env['ENV'] === 'test') { presets = ["babel-preset-react-native"];插件 = ["jest-hoist"]; } module.exports = { 预设,插件 }; ``` (2) 添加 "babel-preset-react-native": "^5", in your devDependencies (3) 更新 package.json 中的测试脚本为 "ENV='test' node_modules/.bin/jest"这样做的原因是在不同的 ENV 中使用不同的 babel 预设
【解决方案2】:

(1)我使用 .babelrc.js 代替 .babelrc 并添加以下 sn-p:

let presets = ["module:metro-react-native-babel-preset"];
let plugins = [];

if (process.env['ENV'] === 'test') {
   presets = ["babel-preset-react-native"];
   plugins = ["jest-hoist"];
}

module.exports = { presets, plugins };

(2) 在你的 devDependencies 中添加 "babel-preset-react-native": "^5" (3) 更新package.json中的测试脚本为

"ENV='test' node_modules/.bin/jest"

这样做的原因是在不同的ENV中使用了不同的babel预设

【讨论】:

  • 这并不能解决我的问题。任何使用箭头函数的组件在使用 ShallowRenderer 时都会返回 undefined。
  • babel-preset-react-native 的最新版本是 4.0.1,该项目已弃用,取而代之的是 metro-react-native-babel-preset。我目前正在使用它。我应该提到我在我的 package.json "jest" 中使用了以下内容:{ "preset": "react-native", "transform": { "^.+\\.js$": "/ node_modules/react-native/jest/preprocessor.js" } }
猜你喜欢
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 2017-08-20
  • 2022-01-13
相关资源
最近更新 更多