Expo SDK32 undefined 不是对象(评估 '_expo2.default.KeepAwake')

Posted

技术标签:

【中文标题】Expo SDK32 undefined 不是对象(评估 \'_expo2.default.KeepAwake\')【英文标题】:Expo SDK32 undefined is not an object (evaluating '_expo2.default.KeepAwake')Expo SDK32 undefined 不是对象(评估 '_expo2.default.KeepAwake') 【发布时间】:2019-10-10 13:10:58 【问题描述】:

我直接按照 Expo 文档中说明的步骤将我的 React Native 应用程序的 expo 从 SDK25 升级到了 SDK32。 当我尝试将应用程序运行到 Expo 客户端时,我收到以下错误

undefined is not an object (evaluating '_expo2.default.KeepAwake') <unknown> crna-entry.js:20:17 loadModuleImplementation require.js:292:12 guardedLoadModule require.js:179:45 global code <unknown file>:0

环境

Expo CLI 2.6.14 节点:10.0.0 npm: 6.5.0 世博会:^32.0.0 => 32.0.0 反应:16.5.0 => 16.5.0 反应原生:https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz => 0.57.1​​ 反应导航:^3.0.9 => 3.0.9

【问题讨论】:

【参考方案1】:

移除 react-native-scripts 并更新主键

【讨论】:

这是什么意思?删除 react-native-scripts?他们不都是反应原生脚本吗? ? 你是如何更新主键的? @AngelGarcia 在“package.json”中进行如下修改后,错误消失了。 (旧)“main”:“./node_modules/react-native-scripts/build/bin/crna-entry.js”,(新)“main”:“./node_modules/expo/AppEntry.js”,跨度> 【参考方案2】:

升级您的项目以使用 Expo CLI。

package.json 进行这些更改:

scripts 配置中将react-native-scripts 替换为expo。 示例:

"scripts": 
    "start": "expo start",
    "eject": "expo eject",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "test": "jest"

devDependencies 中删除react-native-scripts

main 键更改为node_modules/expo/AppEntry.js,然后运行npm start -- -c

【讨论】:

以上是关于Expo SDK32 undefined 不是对象(评估 '_expo2.default.KeepAwake')的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Jest 以使用 Expo SDK 32

31.0.0 不是有效的 SDK 版本。选项是 26.0.0 未版本化

JN5189使用SDK 2.6.4编译JN-AN-1243/1246等项目报undefined reference to `BOARD_CpuClockUpdate32MhzFro`错误

JN5189使用SDK 2.6.4编译JN-AN-1243/1246等项目报undefined reference to `BOARD_CpuClockUpdate32MhzFro`错误

JN5189使用SDK 2.6.4编译JN-AN-1243/1246等项目报undefined reference to `BOARD_CpuClockUpdate32MhzFro`错误

由于我更新了 expo-sdk,我无法运行我的 expo 项目