升级 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.jsonapp.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更新没有发生

无法清除此错误 - 安装 Expo CLI 时的 ENOTEMPTY

未知的执行上下文错误 - 将领域导入 Expo React Native IOS 应用程序

错误:尝试更新 expo-cli 时“操作被您的操作系统拒绝”

如何修复安装 expo-cli