传统的expo-cli不支持Node +17。

8

我已经安装了expo-cli并设置了环境变量,但是出现了以下错误:

旧版的expo-cli不支持Node +17,请迁移到有版本号的Expo CLI(npx expo)。 Uncaught Error Error: EPERM: 操作不允许,mkdir 'C:\Users\a.expo'

Node版本:v18.12.1 npm版本:9.1.3

5个回答

10
我安装了一个包后遇到了同样的错误。经过一番搜索,我发现版本系统有expo依赖项"^1.0.0"。 因此,我通过"npx expo upgrade"进行了更新,我的应用程序就正常工作了。 before npx expo upgrade

5
我曾经有同样的问题,我在项目目录中使用了“npx expo-cli upgrade”命令,问题得到了解决。

1
我认为你应该以 npx expo start 开始。

这对我不起作用。 - Lance
这对我来说不起作用。 - Lance
这对我来说不起作用。 - undefined

0
如果有人遇到类似的问题,注意使用过时的CLI(旧版cli)会导致在expo文档中某些命令无法正常工作。例如,我尝试运行npx expo customize metro.config.js,但命令未被识别。
我尝试使用这篇文章中的第一个答案进行修复,但当运行npx expo upgrade时,我遇到了以下错误:
Error: yarnpkg exited with non-zero code: 1
    at ChildProcess.completionListener (/opt/homebrew/lib/node_modules/expo-cli/node_modules/@expo/spawn-async/src/spawnAsync.ts:65:13)
    at Object.onceWrapper (node:events:628:26)
    at ChildProcess.emit (node:events:513:28)
    at maybeClose (node:internal/child_process:1091:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
    ...
    at spawnAsync (/opt/homebrew/lib/node_modules/expo-cli/node_modules/@expo/spawn-async/src/spawnAsync.ts:26:19)
    at YarnPackageManager._runAsync (/opt/homebrew/lib/node_modules/expo-cli/node_modules/@expo/package-manager/src/NodePackageManagers.ts:314:31)
    at YarnPackageManager.addWithParametersAsync (/opt/homebrew/lib/node_modules/expo-cli/node_modules/@expo/package-manager/src/NodePackageManagers.ts:259:16)
    at YarnPackageManager.addAsync (/opt/homebrew/lib/node_modules/expo-cli/node_modules/@expo/package-manager/src/NodePackageManagers.ts:263:5)
    at upgradeAsync (/opt/homebrew/lib/node_modules/expo-cli/src/commands/info/upgradeAsync.ts:496:7)
    at actionAsync (/opt/homebrew/lib/node_modules/expo-cli/src/commands/info/upgradeAsync.ts:42:3)

我必须先运行yarn upgrade expo,然后再运行npx expo upgrade,这似乎已经解决了expo CLI错误。我也能够成功地运行最初的npx expo customize metro.config.js命令。


0
我遇到了同样的问题 -
$ npm install --global expo-cli // 1st command

$ expo init demo_app // 2nd command
WARNING: The legacy expo-cli does not support Node +17. Migrate to the new local Expo CLI: https://blog.expo.dev/the-new-expo-cli-f4250d8e3421.

[14:38:50]

Migrate to using:

› npx create-expo-app --template

[14:38:51] Input is required, but Expo CLI is in non-interactive mode.

--template: argument is required in non-interactive mode. Valid choices are: "blank", "tabs", "bare-minimum" or any custom template (name of npm package).
  • Node 版本 - v18.17.1
  • NPM 版本 - 9.8.1

解决此问题的步骤:

1 - 卸载 expo-cli:

npm uninstall --global expo-cli

2 - 安装Expo CLI(版本4或更高):
npm install --global @expo-cli

3 - 创建一个新的Expo TypeScript项目:
npx create-expo-app demo_app --template expo-template-blank-typescript

4 - 导航到您的项目:
cd demo_app

5 - 安装 react-native-web@~0.19.6:
npm install react-native-web@~0.19.6

6 - 安装 react-dom@18.2.0:
npm install react-dom@18.2.0

7 - 安装 @expo/webpack-config@^19.0.0:
npm install @expo/webpack-config@^19.0.0

8 - 运行项目:
npm run web

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接