Day113 切换Node.js版本、多数据源配置
切换Node.js版本
1.nvm简介
nvm(Node Version Manager),在Windows上管理Node.js版本,可以在同一台电脑上轻松管理和切换多个Node.js版本
nvm下载地址:https://github.com/coreybutler/nvm-windows/
2.配置nvm
安装之后检查nvm是否已经安装好了,打开cmd窗口:输入nvm -v
像这样,如果有版本就是安装成功了,如果显示不是命令那就是环境变量没有配置好
配置nvm的环境变量:
打开电脑的高级系统设置,找到环境变量,修改系统变量的PATH选项,新增nvm的安装路径,这样nvm就配置在电脑中了
配置好重新打开cmd窗口就应该可以查看nvm版本了
3.nvm更换Node.js版本
首先使用nvm list available 命令可以查看电脑上可以安装的Node.js版本
// 查看可安装的Node.js版本
nvm list available
安装需要的版本
// 安装20.17.0版本的Node.js
nvm install 20.17.0
如果出现successfully就是安装新版本安装成功了,现在你可以使用nvm更换Node.js版本了
// 切换使用指定版本的Node.js
nvm use 20.17.0
出现下面的信息就是更换node版本成功了
C:\Windows\system32>nvm use 20.17.0
Now using node v20.17.0 (64-bit)
查看电脑上的node版本有哪些nvm管理了
// 查看已安装的Node.js版本
nvm list
多数据源配置
yaml配置
application.yml,开发环境使用local
# 项目相关配置
ruoyi:# 名称name: RuoYi# 版本version: 3.9.0# 版权年份copyrightYear: 2025# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)profile: D:/ruoyi/uploadPath# 获取ip地址开关addressEnabled: false# 验证码类型 math 数字计算 char 字符验证captchaType: math# 开发环境配置
server:# 服务器的HTTP端口,默认为8080port: 8080servlet:# 应用的访问路径context-path: /tomcat:# tomcat的URI编码uri-encoding: UTF-8# 连接数满后的排队数,默认为100accept-count: 1000threads:# tomcat最大线程数,默认为200max: 800# Tomcat启动初始化的线程数,默认值10min-spare: 100# 日志配置
logging:level:com.ruoyi: debugorg.springframework: warnconfig: classpath:logback-${spring.profiles.active}.xml# 用户配置
user:password:# 密码最大错误次数maxRetryCount: 5# 密码锁定时间(默认10分钟)lockTime: 10# Spring配置
spring:# 资源信息messages:# 国际化资源文件路径basename: i18n/messagesprofiles:active: local #切换环境# 文件上传servlet:multipart:# 单个文件大小max-file-size: 10MB# 设置总上传的文件大小max-request-size: 20MB# 服务模块devtools:restart:# 热部署开关enabled: true# redis 配置redis:# 地址host: localhost# 端口,默认为6379port: 6379# 数据库索引database: 0# 密码password:# 连接超时时间timeout: 10slettuce:pool:# 连接池中的最小空闲连接min-idle: 0# 连接池中的最大空闲连接max-idle: 8# 连接池的最大数据库连接数max-active: 8# #连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms# token配置
token:# 令牌自定义标识header: Authorization# 令牌密钥secret: abcdefghijklmnopqrstuvwxyz# 令牌有效期(默认30分钟)expireTime: 1380mybatis-plus:#扫描mapper文件所在位置mapper-locations: classpath*:mapper/**/*.xml#可以指定实体类所在包路径type-handlers-package: com.ruoyi.modules.handler.mybatis_plustype-aliases-package: com.ruoyi.**.domainconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# PageHelper分页插件
pagehelper:helperDialect: oraclesupportMethodsArguments: trueparams: count=countSql# Swagger配置
swagger:# 是否开启swaggerenabled: true# 请求前缀pathMapping: /dev-api# 防止XSS攻击
xss:# 过滤开关enabled: true# 排除链接(多个用逗号分隔)excludes: /system/notice# 匹配链接urlPatterns: /system/*,/monitor/*,/tool/*# Knife4j配置
knife4j:# 是否开启Knife4j(swagger增强版)enable: true# 开启屏蔽文档资源production: false
application-dev.yml,再复制两份,分别改成application-local.yml、application-prod.yml
# 数据源配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource
# driverClassName: com.mysql.cj.jdbc.DriverdriverClassName: dm.jdbc.driver.DmDriverdruid:# 主库数据源
# master:
# url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# username: root
# password: 123456master:url: jdbc:dm://192.168.1.111:5236/SYSDBAusername: SYSDBApassword: Dove1314# 从库数据源slave:# 从数据源开关/默认关闭enabled: falseurl: username: password: # 初始连接数initialSize: 5# 最小连接池数量minIdle: 10# 最大连接池数量maxActive: 20# 配置获取连接等待超时的时间maxWait: 60000# 配置连接超时时间connectTimeout: 30000# 配置网络超时时间socketTimeout: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 300000# 配置一个连接在池中最大生存的时间,单位是毫秒maxEvictableIdleTimeMillis: 900000# 配置检测连接是否有效validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsewebStatFilter: enabled: truestatViewServlet:enabled: true# 设置白名单,不填则允许所有访问allow:url-pattern: /druid/*# 控制台管理用户名和密码login-username: ruoyilogin-password: 123456filter:stat:enabled: true# 慢SQL记录log-slow-sql: trueslow-sql-millis: 1000merge-sql: truewall:config:multi-statement-allow: true
logback日志配置
logback-dev.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS},%logger,%C{0},%msg%n"/><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder></appender><appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/console.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${LOG_PATH}/console.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy></appender><appender name="IOEXCEPTION_LOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/ioexception.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${LOG_PATH}/ioexception.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy></appender><logger name="ioexception" level="INFO" additivity="false"><appender-ref ref="IOEXCEPTION_LOGGER"/></logger><root level="INFO"><appender-ref ref="ALL"/></root>
</configuration>
logback-local.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS},%logger,%C{0},%msg%n"/><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder></appender><appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/console.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${LOG_PATH}/console.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy></appender><appender name="IOEXCEPTION_LOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/ioexception.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${LOG_PATH}/ioexception.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy></appender><!-- 设置MyBatis的日志级别 --><!-- 方式1:打印特定Mapper接口的SQL --><logger name="com.example.mapper" level="DEBUG"/><!-- 方式2:打印所有Mapper接口的SQL --><logger name="org.mybatis" level="DEBUG"/><!-- 方式3:打印执行的SQL语句及参数(更详细) --><logger name="java.sql.Connection" level="DEBUG"/><logger name="java.sql.Statement" level="DEBUG"/><logger name="java.sql.PreparedStatement" level="DEBUG"/><logger name="java.sql.ResultSet" level="DEBUG"/><logger name="ioexception" level="INFO" additivity="false"><appender-ref ref="IOEXCEPTION_LOGGER"/></logger><root level="INFO"><appender-ref ref="ALL"/></root>
</configuration>
logback-prod.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS},%logger,%C{0},%msg%n"/><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder></appender><appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/console.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${LOG_PATH}/console.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy></appender><appender name="IOEXCEPTION_LOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/ioexception.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${LOG_PATH}/ioexception.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy></appender><logger name="ioexception" level="INFO" additivity="false"><appender-ref ref="IOEXCEPTION_LOGGER"/></logger><root level="INFO"><appender-ref ref="ALL"/></root>
</configuration>
启动命令
输入命令
-Dspring.profiles.active=local -DLOG_PATH=E:\chiguiCode\cg-lims-notes\logs\admin
日志环境选择local,日志打印在E:\chiguiCode\cg-lims-notes\logs\admin这个文件夹下
运行项目,查看日志文件