当我在我的终端上输入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会改变。

知道这是怎么回事吗?


当前回答

我已经完成了所有的步骤,但是没有帮助。

TLDR;运行NPX——ignore-existing create-react-app

我用的是Mojave 10.15.2的Mac

CRA没有全局安装-在/usr/local/lib/node_modules或/usr/local/bin中也没有找到它。

然后我看到了这条关于CRA github问题的评论。使用——ignore-existing标志运行该命令会有所帮助。

其他回答

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。

对于UBUNTU:如果你有一个错误的模板没有提供npx create-react-app,并且已经卸载了npm create-react-app -g,仍然不能工作,请执行以下操作:

sudo rm -rf usr/bin/create-react-app    

# this will manualy remove the create-react-app. 
npx create-react-app 

使用typescript也可以。

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

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

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

NPM卸载-g create-react-app

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

create-react-app new-app

下面的步骤对我很有效

NPM卸载-g create-react-app npx clear-npx-cache NPM I -g create-react-app create-react-app myapp

我已经完成了所有的步骤,但是没有帮助。

TLDR;运行NPX——ignore-existing create-react-app

我用的是Mojave 10.15.2的Mac

CRA没有全局安装-在/usr/local/lib/node_modules或/usr/local/bin中也没有找到它。

然后我看到了这条关于CRA github问题的评论。使用——ignore-existing标志运行该命令会有所帮助。