【前端】管理工具nvm/nodejs/npm/npx 的联系和区别

一、nvm/nodejs/npm/npx 的联系和区别

  1. nvm
    nvm (Node Version Manager) 是一个用于管理 Node.js 版本的工具。它允许在同一台计算机上安装多个不同版本的 Node.js ,并且可以轻松地在这些版本之间进行切换。这对于开发人员来说很有用,因为不同的项目可能需要使用不同的 Node.js 版本。
    说人话:nvm 用于管理安装和切换不同版本的 Node.js。

  2. Node.js
    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。它允许在服务器端运行 JavaScript 代码,并提供了许多用于构建 Web 应用程序的功能和工具。Node.js 提供了广泛的库和模块,使得开发 Web 服务器、命令行工具和其他类型的应用程序变得更加简单。
    说人话:以前的js是通过浏览器解析的,有node.js可以脱离浏览器的环境执行代码。

  3. npm
    npm (Node Package Manager) 是 Node.js 安装时默认自带的的包管理器。它允许通过命令行安装、升级、卸载和发布 Node.js 项目的软件包。npm 是 JavaScript 社区最流行的软件包管理器之一,它提供了大量的开源软件包供开发人员使用,可以轻松地查找、安装和更新依赖。

  4. npx
    npx(Node Package Executor) 是npm 5.2.0 版本引入的一个命令行工具。它允许执行来自任何 npm 软件包的命令,而无需全局安装这些软件包。通常,如果想在命令行运行某个软件包提供的命令,需要先全局安装该软件包,然后才能使用。但是,npx 允许在不安装软件包的情况下立即运行它们,这在临时使用和测试软件包时非常方便。它可以帮助避免全局安装一些只需要在项目中使用一次或少数几次的工具。
    说人话:npx比npm更智能,npx会搜索后在下载。

因此,nvm 是管理 Node.js 版本的工具,
Node.js 是 JavaScript 运行时环境,
npm 是 Node.js 的软件包管理器,
npx 是 npm 的一个工具,
用于在不全局安装软件包的情况下运行软件包的命令。

二、关于npm

【碎碎念npm】
为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。
于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。

更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

【测试】
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 “npm -v” 来测试是否成功安装

### 解决 `create-vue` 出现 ENOENT 错误的方法 ENOENT 错误通常表示操作系统无法找到指定的文件或路径。这种错误可能由多种原因引起,例如依赖项未正确安装、环境变量配置不正确或者目标路径不存在。 以下是针对该问题的具体分析解决方案: #### 1. **检查 Node.js npm 的版本** 确保使用的 Node.js 版本满足 `create-vue` 工具的要求。Vue 官方推荐使用 LTS 版本的 Node.js 来初始化项目[^1]。可以通过以下命令验证当前版本: ```bash node -v npm -v ``` 如果版本过低,可以升级到最新稳定版: ```bash nvm install --lts nvm use --lts ``` #### 2. **清理缓存并重新安装依赖** 有时 npm 缓存可能会导致下载失败或文件丢失的情况。尝试清除 npm 缓存后再运行创建命令: ```bash npm cache clean --force ``` 接着删除全局已有的相关工具包(如 vue-cli 或者旧版本的 create-vue),再重新安装它们: ```bash npm uninstall -g @vue/cli @vue/create npm install -g create-vue@latest ``` #### 3. **手动修复缺失的模块** 根据引用中的描述,“Cannot download 'https://github.com/sass/node-sass/releases/download/v3.8.0/win32-x64-46_binding.node'”,这表明某些二进制依赖未能成功下载[^2]。对于此类问题,建议切换至 Dart-Sass 替代 node-sass,因为后者已经停止维护许多老版本支持。 修改项目的 package.json 文件,在其中替换 sass-loader 配置部分为 dart-sass 实现方式: ```json { "dependencies": { "sass": "^1.57.0", "sass-loader": "^13.0.0" } } ``` 之后执行更新操作: ```bash npm install ``` #### 4. **确认本地开发环境设置无误** 由于提到 `/Users/danni/.nodejs/lib/node_modules/` 路径下存在多个框架库,需注意这些全局模块是否被正确加载以及权限管理是否有冲突情况发生。如果是 macOS 用户,默认情况下 .nodejs 并不是标准存储位置;考虑调整 NPM 全局前缀来统一管理软件包地址: ```bash npm config set prefix ~/.npm-global export PATH=~/.npm-global/bin:$PATH source ~/.profile ``` 最后再次测试初始化流程是否会触发相同异常现象。 --- ### 提供一段代码样例用于调试日志记录 为了更方便定位具体哪个环节出了差错,可以在调用脚手架之前加入简单的 shell script 执行诊断工作流: ```bash #!/bin/bash echo "Checking environment..." if ! command -v node &> /dev/null; then echo "[Error] Node.js is not installed." exit 1; fi if ! command -v npm &> /dev/null; then echo "[Error] NPM is not installed." exit 1; fi echo "Node version: $(node -v)" echo "NPM version: $(npm -v)" read -p "Do you want to proceed with project creation? (y/n): " choice case "$choice" in y|Y ) create-vue my-new-project;; n|N ) echo "Operation cancelled." ;; * ) echo "Invalid input";; esac ``` 保存上述内容为 setup.sh 后赋予可执行权能并通过 bash ./setup.sh 运行它即可获得更多信息辅助排查过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值