笑话:测试套件未能 运行(Expo SDK 要求 Expo 达到 运行)
Jest: Test suite failed to run (The Expo SDK requires Expo to run)
我很难启动 Jest 和 运行 我的 RN 博览会项目(这样我就可以边玩边学)。
FAIL screens/HomeScreen.test.js
● Test suite failed to run
The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.
at Object.<anonymous> (node_modules/expo/src/environment/validate.ts:11:9)
at Object.require (node_modules/expo/build/Expo.js:278:1)
FAIL __tests__/App-test.js
● Test suite failed to run
The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.
at Object.<anonymous> (node_modules/expo/src/environment/validate.ts:11:9)
at Object.require (node_modules/expo/build/Expo.js:278:1)
PASS components/__tests__/StyledText-test.js (7.769s)
Test Suites: 2 failed, 1 passed, 3 total
Tests: 1 passed, 1 total
Snapshots: 1 passed, 1 total
Time: 10.477s
Ran all test suites.
package.json
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"eject": "expo eject",
"test": "jest --watchAll"
},
"jest": {
"preset": "react-native",
"transformIgnorePatterns": [
"node_modules/(?!((jest-)?react-native|react-clone-referenced-element|expo(nent)?|@expo(nent)?/.*|react-navigation|sentry-expo))"
]
},
"dependencies": {
"@expo/samples": "2.1.1",
"expo": "^32.0.0",
"react": "16.5.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
"react-navigation": "^3.0.9"
},
"devDependencies": {
"babel-preset-expo": "^5.0.0",
"jest": "^24.7.1",
"react-test-renderer": "^16.8.6"
},
"private": true
}
.babelrc
{
"presets": ["react-native"]
}
我认为你的错误是在你的 package.json
文件中的 jest
键,你的 Babel 配置预设也是错误的。
首先将 "jest-expo": "^32.0.0"
添加到您的 devDependencies
(因为您使用的是 SDK 32),然后您必须将 package.json
中的笑话键更改为:
"jest": {
"preset": "jest-expo",
}
将您的 .babelrc
预设键更改为:presets: ['babel-preset-expo']
。或者删除它并创建一个 babel.config.js
文件(推荐),内容如下:
module.exports = api => {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
如果这仍然不起作用,请查看 jest-expo 项目,它应该会为您指明正确的方向。或者发表评论,我会编辑答案以帮助您。
我很难启动 Jest 和 运行 我的 RN 博览会项目(这样我就可以边玩边学)。
FAIL screens/HomeScreen.test.js
● Test suite failed to run
The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.
at Object.<anonymous> (node_modules/expo/src/environment/validate.ts:11:9)
at Object.require (node_modules/expo/build/Expo.js:278:1)
FAIL __tests__/App-test.js
● Test suite failed to run
The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.
at Object.<anonymous> (node_modules/expo/src/environment/validate.ts:11:9)
at Object.require (node_modules/expo/build/Expo.js:278:1)
PASS components/__tests__/StyledText-test.js (7.769s)
Test Suites: 2 failed, 1 passed, 3 total
Tests: 1 passed, 1 total
Snapshots: 1 passed, 1 total
Time: 10.477s
Ran all test suites.
package.json
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"eject": "expo eject",
"test": "jest --watchAll"
},
"jest": {
"preset": "react-native",
"transformIgnorePatterns": [
"node_modules/(?!((jest-)?react-native|react-clone-referenced-element|expo(nent)?|@expo(nent)?/.*|react-navigation|sentry-expo))"
]
},
"dependencies": {
"@expo/samples": "2.1.1",
"expo": "^32.0.0",
"react": "16.5.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
"react-navigation": "^3.0.9"
},
"devDependencies": {
"babel-preset-expo": "^5.0.0",
"jest": "^24.7.1",
"react-test-renderer": "^16.8.6"
},
"private": true
}
.babelrc
{
"presets": ["react-native"]
}
我认为你的错误是在你的 package.json
文件中的 jest
键,你的 Babel 配置预设也是错误的。
首先将 "jest-expo": "^32.0.0"
添加到您的 devDependencies
(因为您使用的是 SDK 32),然后您必须将 package.json
中的笑话键更改为:
"jest": {
"preset": "jest-expo",
}
将您的 .babelrc
预设键更改为:presets: ['babel-preset-expo']
。或者删除它并创建一个 babel.config.js
文件(推荐),内容如下:
module.exports = api => {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
如果这仍然不起作用,请查看 jest-expo 项目,它应该会为您指明正确的方向。或者发表评论,我会编辑答案以帮助您。