当我在我的终端上输入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:使用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。
我上周也遇到了同样的问题。我尝试了答案部分提供的许多方法。但现在情况不同了。这个create-react-app的最新版本提供了2个模板。
1. cra-template
2. cra-template-typescript
如果使用javascript,请选择cra-template。如果你使用typescript,请使用cra-template-typescript。
首先,你必须卸载create-react-app。(如果您有最新版本,请忽略此步骤。)
npm uninstall -g create-react-app
再次安装最新版本的create-react-app
npm install create-react-app@latest
现在您必须像这样导入模板。(如果你使用typescript,请使用"cra-template-typescript"而不是"cra-template"。My-app用作名称。你可以给它起任何名字)。
npx create-react-app my-app --template cra-template
现在将下载模板。但请记住,这并不等于过去的版本。(不同的)
快乐的编码。