Node.js 使用记录
基本概念
Node.js 是一个 JavaScript 运行时环境,基于 Google Chrome 的 V8 引擎,用于在服务器端执行 JavaScript 代码。在Web应用技术栈中属于后端。
技术栈基本划分
各种杂七杂八的框架概念划分如下:
| 层次 | 说明 | 框架技术 |
|---|---|---|
| 前端应用 | 负责用户界面,浏览器中运行 | Vue, React, Angular (HTML+CSS+JavaScript/TypeScript) |
| 后端应用 | 处理业务逻辑,提供 API | Node.js (JavaScript), Django/Flask (Python) Spring/SpringBoot (Java), Rails (Ruby) |
| Web服务器 | 处理HTTP请求,将请求转发到后端应用 (反向代理、负载均衡) |
Ngnix, Apache |
| 数据库 | 通常已被后端框架ORM技术包含 | MySQL, SQLite, Redis, MongoDB |
相关工具
- 包管理器:npm, yarn
- 版本管理:nvm, fnm, docker
使用记录
多版本管理
使用nvm,类似于ruby on rails中的rvm。Linux上使用nvm,Windows上使用nvm-windows
# 基本信息
nvm
# 下载版本
nvm install <版本>
nvm install lts # 下载最新lts版本
nvm install 20 # 下载20.19.0(lts) 和fnm类似
# 选择某版本
nvm use <版本>
# 之后可正常使用node和npm等命令
问题记录
nvm 1.2.2 安装低版本node时报错:
- 安装node14:就是当前版本的bug,下个版本修
error installing 14.21.3: open C:\Users\XLUCID~1\AppData\Local\Temp\nvm-npm-1817418532\npm-v6.14.18.zip: The system cannot find the file specified.` -> - 安装node12:得手动添加npm包
Downloading npm version 6.14.16... Error while downloading https://github.com/npm/cli/archive/v6.14.16.zip - Get"https://github.com/npm/cli/archive/v6.14.16.zip": read tcp 10.192.209.143:53313->20.205.243.166:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. error installing 12.22.12: Could not download npm for node v12.22.12. Please visit https://github.com/npm/cli/archive/12.22.12 to download npm. It should be extracted to C:\Users\Xlucidator\AppData\Local\nvm\v12.22.12
原始Node配置
不论是ubuntu还是windows10,对于非安装版的nodejs,在下载后所做的配置:
- 设置环境变量:
NODE_ROOT为nodejs根目录,NODE_PATH为其中node_modules目录(npm等安装的内容在其中)- 对于ubuntu/linux:将
$NODE_ROOT/bin加入PATH中,NODE_PATH为$NODE_ROOT/lib/node_modules - 对于windows:应用程序就在根,
%NODE_ROOT%加入PATH即可,而NODE_PATH为%NODE_ROOT%\node_modules
- 对于ubuntu/linux:将
- 换源:
npm config set registry <镜像源>- 记录了几种源地址
npm config get <设置变量>可以查看
- 新的包管理器yarn:
npm install -g yarn- 换源,似乎和npm的一样,语法也一样
- 命令行走代理:用的应该是小写的http_proxy和https_proxy,注意变量中加上协议,否则请求出错
Windows中的Powershell能用npm,但是不能用yarn(因为不允许运行yarn.ps1),cmd倒是可以。
Get-ExecutionPolicy会发现策略是Restricted,在管理员权限下用Set-ExecutionPolicy将其改为RemoteSigned
# 管理员权限下
Set-ExecutionPolicy RemoteSigned
# windows命令行设代理,方便复制
## cmd
set http_proxy=http://127.0.0.1:7890
set https_proxy=http://127.0.0.1:7890
## powershell
$env:http_proxy="http://127.0.0.1:7890"
$env:https_proxy="http://127.0.0.1:7890"
源
# yarn
官方:https://registry.yarnpkg.com
# npm
官方:https://registry.npmjs.org
问题记录
ubuntu22 安装node16报错 [old deprecate]
【情况】
用的阿里云ECS,本地apt安装只能到12,所以采取网上说法
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
然后遇到报错
Unpacking nodejs (16.19.0-deb-1nodesource1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_16.19.0-deb-1nodesource1_amd64.deb (--unpack):
trying to overwrite '/usr/include/node/common.gypi', which is also in package libnode-dev 12.22.9~dfsg-1ubuntu3
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
【操作记录】
先找到这篇,按照步骤尝试发现无效;
然后找到另外一篇,应该就是用--force-overwrite强制那个nodejs_16.19.0-deb-1nodesource1_amd64.deb包覆写,但又看了看好像说操作挺暴力,自己这儿一直是root权限就先没试。
再按照第一篇的,先删了/etc/apt/sources.list.d的nodesource.list,然后sudo apt --fix-broken install修复了一下install;就直接apt install nodejs了,结果直接装回了node12。
估摸就是curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -这句添加了nodesource.list,然后又和本地什么包有冲突。
想了想反正就是node12的包没删干净(apt这种包管理原理还没搞清楚),就重新尝试删除。这回是apt purge nodejs + apt autoremove (网上关于删除命令有很多讲究和介绍,没看太懂,之前没用apt autoremove),这回看命令行输出感觉删了很多东西。然后再重复之前的安装操作(不过参数加了-fs,也不懂啥意思和之前有什么区别)
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
就意外装好了。

浙公网安备 33010602011771号