nodejs的安装及配置环境变量
一、nodejs是什么
Nodejs 是一个基于 Chrome 的 V8 引擎开发的一个 C++ 程序,目的是提供一个 JS 的运行环境。最早 Nodejs 主要是安装在服务器上,辅助大家用 JS 开发高性能服务器代码,但是后来 Nodejs 在前端也大放异彩,带来了 Web 前端开发的革命。Nodejs 下运行 JS 代码有两种方式,一种是在 Node.js 的交互环境下运行,另外一种是把代码写入文件中,然后用 node 命令执行文件代码。Nodejs 跟浏览器是不同的环境,写 JS 代码的时候要注意这些差异。
二、Windows 上安装 Node.js
官网:https://nodejs.org/zh-cn
你可以采用以下两种方式来安装:(本人是以zip安装的)
-
Windows 安装包(.msi)
按提示下一步即可,注意修改安装路径 -
Windows 二进制文件 (.zip)
-
直接解压
比如:L:\node-v18.16.0-win-x64
测试:
-
将安装路径配置到环境变量中
测试:
三、配置环境变量
说明:这里的环境配置主要配置的是npm安装的全局模块所在的路径,以及缓存cache的路径,之所以要配置,是因为以后在执行类似:npm install 模块名 [-g] 的安装语句时,会将安装的模块安装到【C:\Users\用户名\AppData\Roaming\npm】路径中,占C盘空间。
本文是将 nodejs 安装在 L:\node-v18.16.0-win-x64 目录下,以下操作可根据实际安装目录情况进行对应调整。
- 在node.js的安装目录下,新建两个文件夹
node_global
和node_cache
,分别用来存放安装的全局模块和全局缓存信息
- 创建完两个文件夹后,在cmd窗口中输入以下命令(两个路径即是两个文件夹的路径):
# 设置全局模块安装路径
npm config set prefix "L:\node-v18.16.0-win-x64\node_global"
# 设置全局缓存存放路径
npm config set cache "L:\node-v18.16.0-win-x64\node_cache"
3. 配置环境变量:
在Path
中新增 L:\node-v18.16.0-win-x64\node_global
;
保存即可。(有问题请指出!!感谢)
四、国内镜像网站配置
由于网络环境限制问题,使用 npm 安装包时,会遇到时间长,甚至安装失败的问题,此时可以选择不同的镜像源进行安装
常用的是使用官方推荐的 cnpm
命令行工具代替默认的 npm
,实际使用的是淘宝源:
npm install -g cnpm --registry=https://registry.npmmirror.com
测试:
注意:有时使用 cnpm 安装的路径可能会存在问题,在使用react-native开发应用时会出现问题。此时可以使用nrm切换淘宝源:
使用nrm有两种方式:
- 使用
npm
全局安装nrm
npm install nrm -g
nrm添加切换源:
nrm add <镜像源名称> <镜像源url地址>
- 使用npx
npm 从5.2版开始,增加了 npx 命令,解决的主要问题,就是调用项目内部安装的模块,还有一个就是npx 还能避免全局安装的模块,起到不用全局安装,下载到一个临时目录,使用以后再删除。
所以使用nrm切换镜像源可以是:
# 查看当前可用的源
nrm ls
# 切换源
nrm use taobao
# 使用 npx
npx nrm ls
npx nrm use taobao
nrm切换遇到的问题–> onst open = require(‘open’);
遇到的错误信息指出了nrm模块中的cli.js文件中的require语句存在问题。错误特别提到在cli.js文件中使用了ES模块(open),但cli.js本身是一个CommonJS模块。
从Node.js 12版本开始,引入了对ES模块(ESM)的支持,允许你使用import语法来导入模块。然而,nrm模块似乎仍然使用旧的CommonJS require语法,这与导入ES模块不兼容。
要解决这个问题,你可以尝试修改nrm模块中的cli.js文件。找到包含const open = require(‘open’);的那一行,并将其改为使用动态的import语句。以下是修改该行的示例代码:
const open = import('open');
通过使用动态的import语句,Node.js应该能够正确处理CommonJS模块中的ES模块。
请注意,修改第三方模块的源代码并不总是建议的做法,因为这可能会导致意外行为或问题。建议将该问题报告给nrm模块的维护者,因为他们最有能力解决兼容性问题并提供适当的修复方法。
修改后能够正常使用: