升级 Expo CLI 有未知错误 --assetPlugins
Posted
技术标签:
【中文标题】升级 Expo CLI 有未知错误 --assetPlugins【英文标题】:Upgrade Expo CLI have unknown error --assetPlugins 【发布时间】:2019-10-22 14:12:19 【问题描述】:我升级到最新的 Expo CLI 2.19.2 并尝试使用 SDK 33 升级我的 expo 应用程序。
当我调用 expo start 时,我有一条消息说:
在浏览器中打开 DevTools...(按 shift-d 禁用)错误:未知选项 `--assetPlugins'
Metro Bundler 进程退出,代码 1 在您的设置 EXPO_DEBUG=true env 查看堆栈跟踪。
我尝试在 Mac 上设置 EXPO_DEBUG=true,但在再次运行 expo start 时未显示任何调试详细信息。
我发现我应该调用 export EXPO_DEBUG=true
这是附加信息:
错误:未知选项 `--assetPlugins'
Metro Bundler 进程以代码 1 退出错误:Metro Bundler 进程 以代码 1 退出 在子进程。 (/@expo/xdl@54.1.2/src/Project.js:1598:16) 在 Generator.next () 在步骤(/Users/simonlam/.nvm/versions/node/v11.6.0/lib/node_modules/expo-cli/node_modules/@expo/xdl/build/Project.js:2347:191) 在 /Users/simonlam/.nvm/versions/node/v11.6.0/lib/node_modules/expo-cli/node_modules/@expo/xdl/build/Project.js:2347:437 在新的承诺 () 在子进程。 (/Users/simonlam/.nvm/versions/node/v11.6.0/lib/node_modules/expo-cli/node_modules/@expo/xdl/build/Project.js:2347:99) 在 ChildProcess.packagerProcess.once (/@expo/xdl@54.1.2/src/Project.js:1595:5) 在 Object.onceWrapper (events.js:276:13) 在 ChildProcess.emit (events.js:188:13) 在 Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
【问题讨论】:
【参考方案1】:请务必将“react-native”升级到版本 33。
yarn add react-native@https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz
还要检查“jest-expo”是否已更新,并更改 app.json 中的“sdkVersion”以匹配 SDK 33。
【讨论】:
【参考方案2】:问题在于您的 expo 项目中 package.json
和 app.json
的版本不匹配。您需要执行如下所示的升级,
更新您的 Expo SDK 版本
从项目中打开app.json
文件并将sdkVersion
更改为33.0.0
更新您的依赖项
打开package.json
文件并更新以下依赖,
devDependencies
中将jest-expo
更新为^33.0.0
在dependencies
中将react-native
更新为^0.59.10
在dependencies
中将expo
更新为^33.0.0
在dependencies
中将react
更新为^16.8.3
进行更改后,运行 npm install
,然后通过运行 expo r -c
清除旧的 js 构建缓存来启动项目,一切顺利。只有 SDK 版本不匹配,Metro Bundler
才会崩溃。更多信息可以阅读Upgrading the Expo SDK Step by Step
【讨论】:
【参考方案3】:我遇到过几次,总感觉有点神秘。根据我的经验,要么是包不匹配,要么您需要清除 expo 缓存。
三重检查您的package.json
中的版本是否正确。 https://docs.expo.io/versions/latest/workflow/upgrading-expo-sdk-walkthrough/#sdk-33
删除所有与 expo 相关的文件夹并在清除缓存的情况下启动 expo
rm -rf node_modules/* && npm i && expo start -c
【讨论】:
【参考方案4】:如上所述,此问题通常是由于 sdk、expo、expo-cli 的包版本不匹配造成的,因此请确保所有版本都兼容。
在我的情况下,问题是 expo-cli 版本太旧而 sdk 是最新的(今天可用 38 个)并且 expo-cli 的升级失败。
错误看起来像 -
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ There is a new version of expo-cli available (3.11.2). │
│ You are currently using expo-cli 3.11.0 │
│ Install expo-cli globally using the package manager of your choice; for example: `npm install -g expo-cli` to get the latest version │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
这就是我为使它工作所做的 -
which expo-cli
rm -rf <path>
npm install -g expo-cli # This ensures you have latest expo cli
现在开始运行
expo-cli start
【讨论】:
以上是关于升级 Expo CLI 有未知错误 --assetPlugins的主要内容,如果未能解决你的问题,请参考以下文章
Expo大作战--expo中的App Icon,expo中的Assets,expo中的ErrorHandling错误处理
无法清除此错误 - 安装 Expo CLI 时的 ENOTEMPTY
未知的执行上下文错误 - 将领域导入 Expo React Native IOS 应用程序