切換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這個文件夾下
運行項目,查看日志文件