02.nodejs与nvm
2024年10月28日大约 11 分钟
02.nodejs与nvm
1. nodejs
1. win
https://nodejs.org/en/
Download for Windows (x64)
12.18.3 LTS
在安装目录下,如 D:\soft\nodejs 新建两个文件夹
node_global(全局包存放目录)
node_cache(缓存目录);
打开命令行工具,执行以下两句操作:
npm config set prefix "D:\devTools\nodejs\nodejs_14.17.0\node_global"
npm config set cache "D:\devTools\nodejs\nodejs_14.17.0\node_cache"
<br>如有权限问题,把node_global 、 node_cache 不要放到nodejs安装目录
配置环境变量:
在系统变量中新建 变量名:NODE_PATH,变量值:D:\devTools\nodejs\nodejs_14.17.0;D:\devTools\nodejs\nodejs_14.17.0\node_global\node_modules
编辑用户变量的 path,将默认的 C 盘下 C:\Users\lxtao\AppData\Roaming\npm 修改为 D:\devTools\nodejs\nodejs_14.17.0\node_global
使用淘宝NPM镜像
npm install -g nrm
执行命令nrm ls查看可选的源,带*的是当前使用的源,上面的输出表明当前源是官方源。
nrm ls
切换源
nrm use taobao
测试速度
nrm test npm
增加
nrm add registry http://registry.npm.frp.trmap.cn/
删除
执行命令nrm del <registry>删除对应的源
2. mac
1.配置nodejs环境变量
vi .zshrc
#1.JAVA
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
#2.ANDROID
export ANDROID_HOME=/Users/frankie/devTools/sdk
#3.NODEJS
export NODE_HOME=/Users/frankie/devTools/nodejs/node_global/bin
#4.MYSQL
export MYSQL_HOME=/usr/local/mysql/bin
export PATH=$PATH:$JAVA_HOME/bin:$ANDROID_HOME/platformtools:$ANDROID_HOME/tools:$NODE_HOME:$MYSQL_HOME:.
2.设置配置信息
sudo npm config set prefix "/Users/frankie/devTools/nodejs/node_global"
sudo npm config set cache "/Users/frankie/devTools/nodejs/node_cache"
3.检查
npm config ls
4.设置镜像源
npm config set registry http://registry.npm.taobao.org/
#换成原来的 npm config set registry https://registry.npmjs.org/
使用nrm快速修改镜像源
安装nrm
npm install nrm -g
增加源
nrm add
删除源
nrm del
查看可选的源(带 * 的是当前使用的源)
nrm ls
测试速度(测试源的相应时间)
nrm test
将npm切换指定的源
nrm use [name]
/*
比如taobao:nrm use taobao
//Registry has been set to: http://registry.npm.taobao.org/
*/
跳转到指定源的官网
npm home [name]
2. NVM
1. nvm介绍
在工作中,可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换。
2. nvm下载安装
2.1 nvm下载
安装包下载地址:https://github.com/coreybutler/nvm-windows/releases,windows系统下载nvm-setup.zip安装包
2.2 nvm安装
- 同意
- 选择nvm安装目录
- nodejs目录
- 参看环境变量
参看版本:
2.3 配置
参考 https://github.com/coreybutler/nvm-windows
用法
nvm-windows 在 Admin shell 中运行。您需要以powershell管理员身份启动或命令提示符才能使用 nvm-windows
nvm arch [32|64]:显示节点是在 32 位还是 64 位模式下运行。指定 32 或 64 以覆盖默认架构。
nvm current: 显示活动版本。
nvm install <version> [arch]:版本可以是特定版本,“latest”表示最新的当前版本,或“lts”表示最新的 LTS 版本。可选地指定是安装 32 位还是 64 位版本(默认为系统架构)。将 [arch] 设置为“all”以安装 32 位和 64 位版本。添加--insecure到此命令的末尾以绕过远程下载服务器的 SSL 验证。
nvm list [available]:列出 node.js 安装。在末尾键入available以显示可供下载的版本列表。
nvm on: 启用 node.js 版本管理。
nvm off:禁用 node.js 版本管理(不卸载任何东西)。
nvm proxy [url]:设置用于下载的代理。留空[url]以查看当前代理。设置[url]为“无”以删除代理。
nvm uninstall <version>:卸载特定版本。
nvm use <version> [arch]:切换到使用指定的版本。可选择使用latest,lts或newest. newest是最新安装的版本。可选择指定 32/64 位架构。nvm use <arch>将继续使用所选版本,但切换到 32/64 位模式。有关use在特定目录中使用(或使用.nvmrc)的信息,请参阅问题 #16。
nvm root <path>: 设置 nvm 应该存放不同版本的 node.js 的目录。如果<path>未设置,将显示当前根目录。
nvm version:显示当前运行的 NVM for Windows 版本。
nvm node_mirror <node_mirror_url>:设置节点镜像。国内的人可以使用https://npmmirror.com/mirrors/node/
nvm npm_mirror <npm_mirror_url>:设置npm镜像。中国的人可以使用https://npmmirror.com/mirrors/npm/
举例:
nvm list available
nvm install 16.15.0 64
nvm use 16.15.0 64
nvm current
2.4 常用配置
# 安装nrm切换淘宝源
npm install -g nrm
nrm ls
nrm use taobao
npm config ls
# 安装less
npm install -g less
# 安装yarn https://yarn.bootcss.com/docs
npm install -g yarn
yarn --version
# yrm 切换淘宝源
npm install -g yrm
yrm ls
yrm use taobao
yrm test taobao
# 配置yarn 环境
yarn global dir
yarn config set global-folder "D:\F_DevTools\webTools\Yarn\yarn-global"
yarn config set cache-folder "D:\F_DevTools\webTools\Yarn\yarn-cache"
# 环境变量
path中新增:D:\F_DevTools\webTools\Yarn\yarn-global\node_modules\.bin
#安装vue/cli
yarn global add @vue/cli@4.5.17
https://yarn.bootcss.com/docs/migrating-from-npm
3. mac同理
- https://github.com/nvm-sh/nvm
- https://www.jianshu.com/p/c920a0428cff
# g
https://github.com/voidint/g
**注意**:`master`分支可能处于开发之中并**非稳定版本**,请通过tag下载稳定版本的源代码,或通过[release](https://github.com/voidint/g/releases)下载已编译的二进制可执行文件。
`g`是一个 Linux、macOS、Windows 下的命令行工具,可以提供一个便捷的多版本 [go](https://golang.org/) 环境的管理和切换。
## 特性
- 支持列出可供安装的 go 版本号
- 支持列出已安装的 go 版本号
- 支持在本地安装多个 go 版本
- 支持卸载已安装的 go 版本
- 支持在已安装的 go 版本之间自由切换
- 支持软件自我更新(>= 1.3.0)
## 安装
### 自动化安装
- Linux/macOS(适用于bash、zsh)
```
# 建议安装前清空`GOROOT`、`GOBIN`等环境变量
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
$ echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。
$ source ~/.bashrc # 或者 source ~/.zshrc
```
### 手动安装
- 下载[release](https://github.com/voidint/g/releases)的二进制压缩包
- 将压缩包解压至`PATH`环境变量目录下(如`/usr/local/bin`)
- 编辑shell环境配置文件(如`~/.bashrc`、`~/.zshrc`...)
```
$ cat>>~/.bashrc<<'EOF'
export GOROOT="${HOME}/.g/go"
export PATH="${HOME}/.g/go/bin:$PATH"
export G_MIRROR=https://golang.google.cn/dl/
EOF
```
- 启用环境变量
```
$ source ~/.bashrc # 或source ~/.zshrc
```
## 使用
查询当前可供安装的`stable`状态的go版本
```
$ g ls-remote stable
1.13.15
1.14.7
```
安装目标go版本`1.14.7`
```
$ g install 1.14.7
Downloading 100% |███████████████| (119/119 MB, 9.939 MB/s) [12s:0s]
Computing checksum with SHA256
Checksums matched
Now using go1.14.7
```
查询已安装的go版本
```
$ g ls
1.7.6
1.11.13
1.12.17
1.13.15
1.14.6
* 1.14.7
```
查询可供安装的所有go版本
```
$ g ls-remote
1
1.2.2
1.3
1.3.1
... // 省略若干版本
1.14.5
1.14.6
* 1.14.7
1.15rc1
```
切换到另一个已安装的go版本
```
$ g use 1.14.6
go version go1.14.6 darwin/amd64
```
卸载一个已安装的go版本
```
$ g uninstall 1.14.7
Uninstalled go1.14.7
```
更新 g 软件本身
```
$ g update
A new version of g(v1.2.2) is available
Downloading 100% |███████████████| (3.7/3.7 MB, 2.358 MB/s)
Computing checksum with SHA256
Checksums matched
Update completed
```
## FAQ
- 环境变量`G_MIRROR`有什么作用?
由于中国大陆无法自由访问 Golang 官网,导致查询及下载 go 版本都变得困难,因此可以通过该环境变量指定一个或多个镜像站点(多个镜像站点之间使用英文逗号分隔),g 将从该站点查询、下载可用的 go 版本。已知的可用镜像站点如下:
- Go官方镜像站点:https://golang.google.cn/dl/
- Go语言中文网:https://studygolang.com/dl
- 阿里云开源镜像站点:https://mirrors.aliyun.com/golang/
- 环境变量`G_EXPERIMENTAL`有什么作用?
当该环境变量的值为`true`时,将**开启所有的实验特性**。
- 环境变量`G_HOME`有什么作用?
按照惯例,g 默认会将`~/.g`目录作为其家目录。若想自定义家目录(Windows 用户需求强烈),可使用该环境变量切换到其他家目录。由于**该特性还属于实验特性**,需要先开启实验特性开关`G_EXPERIMENTAL=true`才能生效。特别注意,该方案并不十分完美,因此才将其归类为实验特性,详见[#18](https://github.com/voidint/g/issues/18)。
- macOS 系统下安装 go 版本,g 抛出`[g] Installation package not found`字样的错误提示,是什么原因?
Go 官方在**1.16**版本中才[加入了对ARM架构的macOS系统的支持](https://go.dev/doc/go1.16#darwin)。因此,ARM 架构的 macOS 系统下均无法安装1.15及以下的版本的 go 安装包。若尝试安装这些版本,g 会抛出`[g] Installation package not found`的错误信息。
- 是否支持网络代理?
支持。可在`HTTP_PROXY`、`HTTPS_PROXY`、`http_proxy`、`https_proxy`等环境变量中设置网络代理地址。
- 支持哪些 Windows 版本?
因为`g`的实现上依赖于`符号链接`,因此操作系统必须是`Windows Vista`及以上版本。
- Windows 版本安装以后不生效?
这有可能是因为没有把下载安装的加入到 `$Path` 的缘故,需要手动将 `$Path` 纳入到用户的环境变量中。为了方便起见,可以使用项目中的 `path.ps1` 的 PowerShell 脚本运行然后重新启动计算机即可。
- 支持源代码编译安装吗?
不支持
## 鸣谢
感谢[nvm](https://github.com/nvm-sh/nvm)、[n](https://github.com/tj/n)、[rvm](https://github.com/rvm/rvm)等工具提供的宝贵思路。
https://goproxy.cn/
### [用法](https://goproxy.cn/#usage)
[Go 1.13 及以上(推荐)](https://goproxy.cn/#usage-go-113-and-above-recommended)
打开你的终端并执行
```
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
```
完成。
[macOS 或 Linux](https://goproxy.cn/#usage-macos-or-linux)
打开你的终端并执行
```
$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn
```
或者
```
$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
$ source ~/.profile
```
完成。
[Windows](https://goproxy.cn/#usage-windows)
打开你的 PowerShell 并执行
```
C:\> $env:GO111MODULE = "on"
C:\> $env:GOPROXY = "https://goproxy.cn"
```
或者
```
1. 打开“开始”并搜索“env”
2. 选择“编辑系统环境变量”
3. 点击“环境变量…”按钮
4. 在“<你的用户名> 的用户变量”章节下(上半部分)
5. 点击“新建…”按钮
6. 选择“变量名”输入框并输入“GO111MODULE”
7. 选择“变量值”输入框并输入“on”
8. 点击“确定”按钮
9. 点击“新建…”按钮
10. 选择“变量名”输入框并输入“GOPROXY”
11. 选择“变量值”输入框并输入“https://goproxy.cn”
12. 点击“确定”按钮
```
完成。
### [自托管 Go 模块代理](https://goproxy.cn/#self-hosted-go-module-proxy)
你的代码永远只属于你自己,因此我们向你提供目前世界上最炫酷的自托管 Go 模块代理搭建方案。通过使用 [Goproxy](https://github.com/goproxy/goproxy) 这个极简主义项目,你可以在现有的任意 Web 服务中轻松地引入 Go 模块代理支持,要知道 Goproxy.cn 就是基于它搭建的。
创建一个名为 `goproxy.go` 的文件
```
package main
import (
"net/http"
"os"
"github.com/goproxy/goproxy"
)
func main() {
http.ListenAndServe("localhost:8080", &goproxy.Goproxy{
GoBinEnv: append(
os.Environ(),
"GOPROXY=https://goproxy.cn,direct", // 使用 Goproxy.cn 作为上游代理
"GOPRIVATE=git.example.com", // 解决私有模块的拉取问题(比如可以配置成公司内部的代码源)
),
ProxiedSUMDBs: []string{
"sum.golang.org https://goproxy.cn/sumdb/sum.golang.org", // 代理默认的校验和数据库
},
})
}
```
并且运行它
```
$ go run goproxy.go
```
然后通过把 `GOPROXY` 设置为 `http://localhost:8080` 来试用它。另外,我们也建议你把 `GO111MODULE` 设置为 `on`。
就这么简单,一个功能完备的 Go 模块代理就搭建成功了。事实上,你还可以将 [Goproxy](https://github.com/goproxy/goproxy) 结合着你钟爱的 Web 框架一起使用,比如 [Gin](https://pkg.go.dev/github.com/gin-gonic/gin#WrapH) 和 [Echo](https://pkg.go.dev/github.com/labstack/echo/v4#WrapHandler),你所需要做的只是多添加一条路由而已。更高级的用法请查看[文档](https://pkg.go.dev/github.com/goproxy/goproxy)。
一、consul 服务注册中心
官网地址:https://www.consul.io/
Consul 是 HashiCorp 公司推出的开源产品,用于实现分布式系统的服务发现、服务隔离、服务配置,这些功能中的每一个都可以根据需要单独使用,也可以同时使用所有功能。Consul 官网目前主要推 Consul 在服务网格中的使用。
与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具。Consul 本身使用 go 语言开发,具有跨平台、运行高效等特点,也非常方便和 Docker 配合使用。
1、下载安装
下载地址:https://www.consul.io/downloads
在指定目录解压缩 注意:不建议目录含义中文
2、使用
2.1、在当前目录打开cmd窗口
consul agent -dev # 以开发模式启动(测试使用)
consul agent -service # 以服务器的模式启动(需要集群)
1
2
2.2、访问 consul 管理页面
浏览器访问:http://localhost:8500
2.3、管理界面的基本介绍
dc1:数据中心名称(datacenter 默认:dc1)
# 启动时自定义数据中心名称
consul agent -dev -client=0.0.0.0 --datacenter=yanchi
services:当前consul服务中注册服务列表(默认启动会注册自己)
nodes:consul 的集群节点
二、consul 客户端(Java)
2.1、引入依赖
<!-- 引入consul依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!-- 健康检查的依赖,不添加会显示服务不可用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.2、编写application.yml配置
server:
# 启动端口号
port: 8082
spring:
application:
# 服务名称
name: CONSULCLIENT
cloud:
consul:
# consul注册中心地址
host: localhost
# consul注册中心端口
port: 8500
discovery:
# 执行注册当前服务的服务名称 默认:${spring.application.name}
service-name: ${spring.application.name}
# 注册时是否使用本机ip注册(不配置就是主机名)
prefer-ip-address: true
2.3、在入口类加上注解
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConsulClientApplication.class,args);
}
}
2.4、启动服务,查看注册中心
————————————————
版权声明:本文为CSDN博主「雁迟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_51311218/article/details/122506524