当我在我的终端上输入create-react-app my-app命令时,它似乎工作了-下载所有库成功等。在该过程结束时,我得到一个消息,没有提供模板。

输入

user@users-MacBook-Pro-2 Desktop% create-react-app my-app

输出

Creating a new React app in /Users/user/Desktop/my-app.

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...
..... nothing out of the ordinary here .....
✨  Done in 27.28s.

A template was not provided. This is likely because you're using an outdated version of create-react-app.
Please note that global installs of create-react-app are no longer supported.

在包中。my-app的Json:

"dependencies": {
  "react": "^16.12.0",
  "react-dom": "^16.12.0",
  "react-scripts": "3.3.0" <-- up-to-date
}

我检查了CRA更改日志,它看起来像是增加了对自定义模板的支持-但是它看起来不像命令create-react-app my-app会改变。

知道这是怎么回事吗?


当前回答

先清空你的npm缓存,然后使用yarn,如下所示:

NPM缓存清理——force NPM缓存验证 Yarn创建my-app

我希望这能有所帮助。

EDIT

...在我进一步研究了这个问题之后,你可能想尝试以下方法:

NPM卸载-g create-react-app Yarn全局删除create-react-app which create-react-app -如果它返回一些东西(例如/usr/local/bin/create-react-app),然后执行rm -rf /usr/local/bin/create-react-app手动删除。 NPM缓存清理——force NPM缓存验证 npx create-react-app@latest

These steps should remove globally installed create-react-app installs, you then manually remove the old directories linked to the old globally installed create-react-app scripts. It's then a good idea to clear your npm cache to ensure your not using any old cached versions of create-react-app. Lastly create a new reactjs app with the @latest option like so: npx create-react-app@latest. There has been much confusion on this issue where no template is created when using npx create-react-app, if you follow the steps I have stated above (1-6) then I hope you'll have success.

p.s.

如果我想在一个叫client的目录中创建一个react应用程序,那么我会在终端中输入以下命令:

NPX create-react-app@latest ./client

祝你好运。

其他回答

对于Linux,这对我来说是有效的

sudo npm uninstall -g create-react-app
npx create-react-app my-test-app

先清空你的npm缓存,然后使用yarn,如下所示:

NPM缓存清理——force NPM缓存验证 Yarn创建my-app

我希望这能有所帮助。

EDIT

...在我进一步研究了这个问题之后,你可能想尝试以下方法:

NPM卸载-g create-react-app Yarn全局删除create-react-app which create-react-app -如果它返回一些东西(例如/usr/local/bin/create-react-app),然后执行rm -rf /usr/local/bin/create-react-app手动删除。 NPM缓存清理——force NPM缓存验证 npx create-react-app@latest

These steps should remove globally installed create-react-app installs, you then manually remove the old directories linked to the old globally installed create-react-app scripts. It's then a good idea to clear your npm cache to ensure your not using any old cached versions of create-react-app. Lastly create a new reactjs app with the @latest option like so: npx create-react-app@latest. There has been much confusion on this issue where no template is created when using npx create-react-app, if you follow the steps I have stated above (1-6) then I hope you'll have success.

p.s.

如果我想在一个叫client的目录中创建一个react应用程序,那么我会在终端中输入以下命令:

NPX create-react-app@latest ./client

祝你好运。

我也遇到了同样的问题,我已经在我的机器上全局安装了“创建-反应-应用程序”。 有错误:

“没有提供模板。这可能是因为您使用的是过时版本的create-react-app。 请注意,不再支持create-react-app的全球安装。”

然后我删除了以前的安装使用这个命令。

NPM卸载-g create-react-app

然后安装新的react应用程序。

create-react-app new-app

TLDR:使用npm Uninstall -g create-react-app卸载全局包,并使用npx create-react-app app生成新的react应用。


问题

你正在使用一个旧版本的create-react-app,你已经用npm全局安装了。create-react-app命令调用这个全局包。

你可以通过运行npm expired -g create-react-app或比较create-react-app——version与npm view create-react-app来确认你使用的是一个过时的版本。

react-scripts的版本是最新的,这一事实与引导应用程序的包的版本(create-react-app)无关,后者抓取了它使用的包的最新版本(在本例中是react-scripts)。

解决方案

如果你想继续使用create-react-app命令,你需要使用npm update -g create-react-app更新全局包。请注意,您需要定期这样做以保持更新。你会注意到create-react-app不建议这样做(在安装日志中有记录)。

一个更好的方法是完全删除全局安装(npm uninstall -g create-react-app),而是使用npx,以便它每次都抓取包的最新版本(关于npx的详细信息如下)。

您应该通过尝试使用create-react-app来确保命令“未找到”来确认它已全局卸载。

卸载有问题吗?

你可以使用create-react-app调试它的安装位置。如果你在卸载它时遇到问题,你的机器上可能有多个版本的node/npm(来自多个安装,或者因为你使用了节点版本管理器,如nvm)。这是一个单独的问题,我不会在这里解决,但在这个答案中有一些信息。

一个快速的核心方法是在create-react-app返回的路径上强制删除它(rm -rf)。


补充

全局npm包和npx命令

$ NPM_PACKAGE_NAME将始终使用包的全局安装版本,无论您在哪个目录中。

$ npx NPM_PACKAGE_NAME将使用它从当前目录搜索到根目录时找到的包的第一个版本:

如果您的当前目录中有这个包,它将使用它。 否则,如果包在当前目录的父目录中,它将使用它找到的第一个目录。 否则,如果你全局安装了这个包,它就会使用它。 否则,如果你根本没有这个包,它会临时安装它,使用它,然后丢弃它。-这是确保包装是最新的最好方法。

更多关于npx的信息可以在这个答案中找到。

使用npx和create-react-app

create-react-app有一些特殊的命令/别名来创建一个特定于该包的react应用程序(而不是npx) (yarn create react-app, NPM init react-app),但npx create-react-app的工作方式与其他包相同。

Yarn vs NPM全局安装

Yarn将全局安装包存储在与npm不同的文件夹中,这就是为什么Yarn create react-app可以在不卸载全局npm包的情况下立即工作(就Yarn而言,这个包还没有安装)。

这只是一个临时的解决方案,因为你需要记住在使用Create React App时总是使用yarn而不是npm。

虽然这里已经有很多答案了。 当我面对这种情况时,我想出了3个解决方案。


第一步:从官方手册,

如果你之前已经通过npm install -g create-react-app全局安装了create-react-app,我们建议你使用npm uninstall -g create-react-app卸载这个包,以确保npx总是使用最新的版本。

https://create-react-app.dev/docs/getting-started

你可以使用下面这些命令:

create-react-app my-app NPM init react-app my-app Yarn创建my-app


第二步(如果第一步不管用):

有时它可能会保存缓存。然后您可以使用下面给出的这些命令。

NPM卸载-g create-react-app NPM缓存清理——force NPM缓存验证 Yarn创建my-app


第三步:(如果这两步都不行) 首先通过NPM uninstall -g create-react-app卸载,然后检查你的命令行上的create-react-app命令是否“安装”了它。如果你得到(/usr/local/bin/create-react-app)这样的文件,那么运行rm -rf /usr/local/bin/create-react-app(文件夹可能不同)手动删除。 然后再次通过npx/npm/yarn安装它。

NB:最后一步我成功了。