TypeError: cli.init不是React Native的函数。

91

在 MacBook Air M1 芯片上运行 npx react-native init appName 时

TypeError: cli.init is not a function
at run (/opt/homebrew/lib/node_modules/react-native-cli/index.js:302:7)
at createProject (/opt/homebrew/lib/node_modules/react-native-cli/index.js:249:3)
at init (/opt/homebrew/lib/node_modules/react-native-cli/index.js:200:5)
at Object.<anonymous> (/opt/homebrew/lib/node_modules/react-native-cli/index.js:153:7)
at Module._compile (node:internal/modules/cjs/loader:1112:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Module._load (node:internal/modules/cjs/loader:834:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47

在Windows 10中出现相同的问题。使用react-native-cli来初始化一个项目。 - Farhan
18个回答

160

安装新的React Native全局包

npm uninstall -g react-native-cli

安装新的React Native全局包。

npm install -g react-native-cli

npm install -g react-native

并重新创建项目

npx react-native init AwesomeProject

3
如果您之前安装了全局的react-native-cli包,请将其删除,因为它可能会引起意料之外的问题。 - Weijing Jay Lin
当我创建一个新的React Native项目时,我的Ios/Anroid文件夹没有被创建,这让我感到困惑,因为我已经做过几次了。你的解决方案非常有帮助,应该排在首位,因为在你的帮助下解决这个问题非常容易,谢谢。 - steve
1
对我来说关键是要明白我需要完全放弃 react-native-cli,并让 npx react-native 来完成工作。 - Charney Kaye
这对我有用。谢谢。 - Lasitha Lakmal

113

这个错误是由新版本0.69.0引起的。您可以使用npx react-native init 项目名称 --version 0.68.2,然后再升级到v0.69。


10
这个答案是正确的。非常感谢。 - Tram Nguyen
2
这个答案让RN 69看起来像是一个bug,但实际上它是一个重大变化,虽然这个解决方法有效,但它并没有真正解决根本原因,即全局安装了旧版本的react-native或react-native-cli。正确的解决方法是卸载全局cli(不要再次全局安装),就像在这个答案中所解释的那样:https://dev59.com/IVEG5IYBdhLWcg3wI02g#72768422 除非卸载,否则npx react-native init可能无法为任何未来的新版本的react-native工作。 - silyevsk
1
我尝试了那个解决方案,但对我没有用。React Native CLI 中确实存在一些错误,但对于刚开始学习的人来说,这是一个障碍,这将解决我后来遇到的问题。我已经将我的项目升级到 69,现在它可以正常工作了。 - Iva
1
这个解决方案可行。使用v0.69版本甚至不能正确报告错误。新用户可能会因此受到误导。 我在命令“cli.init不是一个函数”中看到了错误。 - pjoshi
1
对我来说关键是要明白我需要完全放弃 react-native-cli,只需让 npx react-native 来完成工作。 - Charney Kaye

44

需要使用以下命令清理全局环境:

yarn global remove react-native

yarn global remove react-native-cli

npm uninstall -g react-native

npm uninstall -g react-native-cli

检查这些列表中是否存在与React Native相关的内容:

yarn global list

npm -g list

安装新的React Native全局模块

npm install -g react-native-cli
npm install -g react-native

然后你可以运行:

npx react-native init ProjectName 

7
没成功 - 对你有效吗? - Bharat Singh
1
它起作用了 - 你没能让它起作用吗? - Said Torres
也不行。需要这个:https://github.com/facebook/react-native/issues/34055#issuecomment-1164390603 - Chaki_Black

16

这是因为你使用的React Native版本过旧,所以需要全局移除React Native,并重新安装。

解决问题的步骤:

如果你使用的是Yarn:

第一步:检查全局安装列表:

yarn global list

如果你已经发现了 react-native 和 react-native-cli,那么请继续下一步并将它们全局删除。

第二步:


yarn global remove react-native
yarn global remove react-native-cli

第三步:再次安装它们

yarn global add react-native
yarn global add react-native-cli

如果您使用的是NPM:

第一步: 检查全局安装列表:

npm -g list

如果你已经安装了 react-native 和 react-native-cli,请执行下一步并全局卸载它们。

第二步:


npm uninstall -g react-native
npm uninstall -g react-native-cli

第三步:重新安装它们

npm install -g react-native
npm install -g react-native-cli
注意:删除之前创建的旧项目,然后再次创建。一切都会顺利进行。

7

这个错误是由新版本0.69.0引起的。 您可以使用npx react-native init ProjectName --version 0.68.2,然后稍后升级到v 0.69。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community
你的回答可以通过添加更多支持信息来改进。请编辑并添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Prateek Varshney

3

我认为最新的稳定版本是0.68.2,因此请使用下面的命令在此版本上创建项目:

npx react-native init 项目名称 --version 0.68.2


谢谢,它对我有用。奇怪的是, npm uninstall -g react-native-cli @react-native-community/cli npx react-native@latest init AwesomeProject 没有起作用。 - Amit Bhagat

3
如果您之前安装了全局的react-native-cli包,请将其删除,因为它可能会导致意外问题:
npm uninstall -g react-native-cli @react-native-community/cli

链接 在这里


2

需要运行:

yarn global listnpm global list

并卸载列表中所有react-native的命令行工具,然后再运行:

yarn global add @react-native-community/cli

2

如果您之前安装了全局的react-native-cli包,请将其删除,因为它可能会导致意外问题:

npm uninstall -g react-native-cli @react-native-community/cli

React Native有一个内置的命令行界面,您可以使用它来生成一个新项目。您可以使用Node.js附带的npx而不必全局安装任何东西来访问它。让我们创建一个名为“AwesomeProject”的新React Native项目:

npx react-native@latest init AwesomeProject

如果您正在将React Native集成到现有应用程序中,或者从Expo中“eject”,或者向现有React Native项目添加Android支持(请参见与现有应用程序的集成),则不需要执行此操作。您还可以使用第三方CLI来初始化您的React Native应用程序,例如Ignite CLI。


我为这个答案投+1票。自从最新的react-native(0.71.3)不再需要react-native-cli@2.0.0之后,可以删除cli并在我的情况下使用npx react-native@latest init AwesomeProject。我的环境:MacOS 10.14.6 Node v.14.19.0 NPM 6.14.16。 - adesst

1

删除旧版本的react-native-cli:

yarn global remove react-native-cli && npm uninstall -g react-native-cli

安装@react-native-community/cli:

yarn global add @react-native-community/cli 或者 npm install -g react-native-cli

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