创建react项目This is likely because you're using an outdated version of create-reate

972 阅读3分钟

一,版本问题

使用npx creact-react-app project 只生成了node_modules, package.json and packageloack.json,生成不全,

并且cmd会报一个问题:
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.
(翻译:未提供模板。这可能是因为您正在使用过时的create react app版本。请注意,不再支持create react app的全局安装。)


因为Create react-app 这个脚手架更新了版本,而我本地是之前全局安装的脚手架1.0版本,目前根据官方文档的新创建语句
npx create-react-app demo(默认会运行新版本的脚手架),所以是我的脚手架版本不是新版造成的。

1,解决方法

我在网上找了很久,尝试了很多方法都不尽人意。目前可以创建项目所用到的方法是:

创建语句:create-react-app myapp(你的项目名称) --scripts-version=react-scripts@1.x

这个语句的意思是,使用1.0版本的脚手架创建项目,虽然治标不治本但将就能用。

以下是我所找到的可以更新脚手架的方法,只有一部分人可以用,很不幸我不是那部分幸运的人。

首先,根据官方文档,需要查看自己的node,npm版本是否达到要求,你需要在你的机器上安装 Node >= 8.10 和
npm >= 5.6,在cmd使用命令 noce -v ,npm -v,即可查看。
官方文档给的创建项目步骤:
npx create-react-app my-app
cd my-app
npm start
备注:第一行的 npx 不是拼写错误 —— 它是 npm 5.2+ 附带的 package 运行工具。

如果你接下来也很不幸的报了跟我一样的错误,请往下看,

npm uninstall -g create-react-app/npm rm -g create-react-app(卸载安装的旧版本)但是我卸载了也不管用
谷歌上热心网友做完这一步之后,还有接下来的建议:
从用户root从node_modules删除create-react-app
如果你和我一样找不到create-react-app,你可以考虑下面热心网友删除的做法:
 {当我卸载它时,在/usr/local/lib/node_modules找不到该文件夹;
 但是它仍然失败( npx --ignore-existing create-react-app可以使用。)
 然后在/usr/local/bin找到该文件夹,然后删除create-react-app文件夹,它可以工作}

我在删除文件夹之后创建项目时报错了:

Error: Cannot find module 'C:\Users\DELL\AppData\Roaming\npm\node_modules\create-react-app\index.js'
 at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
 at Function.Module._load (internal/modules/cjs/loader.js:562:25)
 at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
 at startup (internal/bootstrap/node.js:283:19)
 at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

所以我暂时没能继续下去。

2,我不能理解但是有人成功的方法

 npm install -g create-react-app
 npx create-react-app my-app

3,其他无用的尝试

我还尝试删除了npm的缓存npm cache clean -f
另一种方式清除 npm 缓存,目录:C:\Users\Administrator\AppData\Roaming\npm-cache 删除该目录下的所有文件
我还尝试给我的npm换了个镜像:npm config set registry https://registry.npm.taobao.org  之后 npm config get registry