node.js - “sudo npm install -g create-react-app”命令不起作用
问题描述
我刚开始学习 Reactjs,我正在学习一个教程,我们安装的第一件事是带有 npm 的 Nodejs,我安装了最新版本没有任何问题
节点 - v14.17.0 npm - 6.14.13
现在讲师告诉我们 create-react-app 的好处,并展示了如何使用终端在我们的系统上安装包(他说在 windows 上使用 gitbash),他使用了命令
sudo npm install -g create-react-app
在他的 Mac 上并且它已成功安装在他的系统上,他提到 -g 将确保在全球范围内安装它,以便我们可以在任何地方使用它。然后他创建了一个项目使用
create-react-app hello_world
并显示了它创建的文件夹,还使用了命令
npm start
并显示它有效,但是当我在笔记本电脑(操作系统 - Windows 10)上打开 gitbash 并使用命令时
sudo npm install -g create-react-app
它说 sudo: command not found
我在 cmd 上尝试过,它也在那里给出了错误
'sudo' is not recognized as an internal or external command,
operable program or batch file.
我尝试在 Internet 和 YouTube 上搜索,但它们显示了不同的命令来安装 create-react-app,我想知道为什么这个命令在我的系统上不起作用?
npm -v 命令也成功运行并给出了安装的版本,所以我认为 npm 安装没有问题,而且由于我是全新的,我不知道可能出了什么问题,所以请帮忙。
解决方案
"sudo" = "super user do" 是 Unix / Linux / Mac Terminal 运行命令的方式,该命令有权为整个系统 / 为所有用户写入和更改文件,您可以通过“管理员”权限在 Windows 上执行的操作. 它不是 Bash 的一部分,因此适用于 Windows 的 Git Bash 没有或模拟它。
所以只需尝试不带 的命令sudo
,即
npm install -g create-react-app
如果您需要“sudo”或 Windows 管理员权限(特权提升),则取决于整个系统的配置,在这种情况下,尤其是 Node.js。在我面前的机器上(带有预设)我需要 sudo 来处理一些“全局”Node.js 目录,但对于其他人不需要,在我身后桌子上的机器上我根本不需要 sudo 来处理 Node 的“全局” “目录。您应该始终先尝试不带“sudo”的命令,然后等待系统明确告诉您该操作需要特殊权限。
请注意,顺便说一句,您会在互联网上找到数以万亿计的带有“sudo”的示例和“解决方案”,其中没有“sudo”是必要的,并且宁愿破坏而不是帮助。
另一个故事是你的导师的方式有点过时了。使用当前的 Node.js / NPM 版本(例如,如果您刚刚安装),您通常不会全局安装 create-react-app 之类的包,而是“本地”安装,即每个项目,并且与使用npx而不是npm创建您的项目(“x”与“m”):
npx create-react-app hello_world
请注意,https ://create-react-app.dev/docs/getting-started/ 上的声明“npx 始终使用最新版本”有点误导:npx 不会更新系统上的现有软件包,但它会下载软件包您的机器上尚不存在,因此显然总是会获得最新版本。为此,您不应该全局安装软件包(“-g”),因为 npx 可能会在几年后使用您曾经为新项目的短期课程(并忘记)安装的全局安装的软件包版本,而不是最新版本,或者反过来说,您的旧课程项目仍然可以工作,因为它使用的是当时的包版本,而不是五年后的版本,缺少一些已弃用的功能。
推荐阅读
- python - 什么决定了 paramiko 的 recv() 函数可接收的最大字节数?
- excel - 基于下拉列表选择从另一个工作表索引数据
- postgresql - Postgresql - insert when not match and returning pid
- validation - 在 redux 表单字段中输入时输入验证
- matrix - 当用户 ID 和产品 ID 不是数字时,如何获取 sparse.csr_matrix?
- css - 对象位置的关键帧动画在 Safari 中不起作用
- java - Android 的类加载器与 Oracle 的不同吗?
- android - 致命信号 11 (SIGSEGV),代码 2,tid 21198 中的故障地址 0x7fa4c3813c (Crashlytics Exc)
- kotlin - 为什么我不能将可空类型分配给 Kotlin 中的 Any?
- python - 在 Python 中将字节数据转换为位后的处理