小白 thingsboard 拆分前后端分离

news2025/4/9 9:59:38

1、modules 里注释掉ui_ugx

 <modules>
        <module>netty-mqtt</module>
        <module>common</module>
        <module>rule-engine</module>
        <module>dao</module>
        <module>edqs</module>
        <module>transport</module>
<!--        <module>ui-ngx</module>-->
        <module>tools</module>
        <module>application</module>
        <module>msa</module>
        <module>rest-client</module>
        <module>monitoring</module>
    </modules>

2、程序位置

3、注释相关程序

在 IntelliJ IDEA 中,注释程序的快捷键如下4:

  • 单行注释:Windows/Linux 系统下使用Ctrl + /,macOS 系统下使用Cmd + /。将光标移动到需要注释的行,按下快捷键可在行首添加注释符号//,再次按下则取消注释。
  • 多行注释:Windows/Linux 系统下使用Ctrl + Shift + /,macOS 系统下使用Cmd + Shift + /。先选中要注释的多行代码,然后按下快捷键会在选中的代码前后添加注释符号/* */,若要取消注释,光标在注释内容上按该快捷键即可。
  • 方法或类的注释:在方法或类的开头输入/**,然后按回车键,可自动根据参数和返回值生成注释模板。

4、配置前端服务器的代理规则

const forwardUrl = "http://localhost:8080";
const wsForwardUrl = "ws://localhost:8080";
const ruleNodeUiforwardUrl = forwardUrl;

const PROXY_CONFIG = {
  "/api": {
    "target": forwardUrl,
    "secure": false,
  },
  "/static/rulenode": {
    "target": ruleNodeUiforwardUrl,
    "secure": false,
  },
  "/static/widgets": {
    "target": forwardUrl,
    "secure": false,
  },
  "/oauth2": {
    "target": forwardUrl,
    "secure": false,
  },
  "/login/oauth2": {
    "target": forwardUrl,
    "secure": false,
  },
  "/api/ws": {
    "target": wsForwardUrl,
    "ws": true,
    "secure": false
  },
};

module.exports = PROXY_CONFIG;

5、程序解释

1. 定义代理配置对象 PROXY_CONFIG

javascript

const PROXY_CONFIG = {

使用 const 关键字声明了一个常量 PROXY_CONFIG,它是一个对象,用于存储多个代理规则。

2. 定义 /api 路径的代理规则

javascript

  "/api": {
    "target": forwardUrl,
    "secure": false,
  },

  • /api:这是一个路径匹配规则,表示当请求的路径以 /api 开头时,将应用此代理规则。
  • target:指定代理目标地址,这里使用之前定义的 forwardUrl 常量,即 "http://localhost:8080"。这意味着当请求以 /api 开头时,请求将被转发到 http://localhost:8080
  • secure:设置为 false 表示在代理过程中不验证 SSL 证书,通常在开发环境中使用,以避免因自签名证书等问题导致的错误。
3. 定义 /static/rulenode 路径的代理规则

javascript

  "/static/rulenode": {
    "target": ruleNodeUiforwardUrl,
    "secure": false,
  },
  • /static/rulenode:路径匹配规则,当请求路径以 /static/rulenode 开头时应用此规则。
  • target:使用 ruleNodeUiforwardUrl 常量,其值与 forwardUrl 相同,即 "http://localhost:8080"。请求将被转发到该地址。
  • secure:同样设置为 false,不验证 SSL 证书。
4. 定义 /static/widgets 路径的代理规则

javascript

  "/static/widgets": {
    "target": forwardUrl,
    "secure": false,
  },
  • /static/widgets:路径匹配规则。
  • target:使用 forwardUrl,请求将被转发到 http://localhost:8080
  • secure:设置为 false
5. 定义 /oauth2 路径的代理规则

javascript

  "/oauth2": {
    "target": forwardUrl,
    "secure": false,
  },
  • /oauth2:路径匹配规则。
  • target:使用 forwardUrl,请求将被转发到 http://localhost:8080
  • secure:设置为 false
6. 定义 /login/oauth2 路径的代理规则

javascript

  "/login/oauth2": {
    "target": forwardUrl,
    "secure": false,
  },

  • /login/oauth2:路径匹配规则。
  • target:使用 forwardUrl,请求将被转发到 http://localhost:8080
  • secure:设置为 false
7. 定义 /api/ws 路径的代理规则

javascript

  "/api/ws": {
    "target": wsForwardUrl,
    "ws": true,
    "secure": false
  },
  • /api/ws:路径匹配规则。
  • target:使用 wsForwardUrl,即 "ws://localhost:8080",表示这是一个 WebSocket 请求的代理目标。
  • ws:设置为 true 表示这是一个 WebSocket 代理,服务器将处理 WebSocket 连接。
  • secure:设置为 false,不验证 SSL 证书。
8. 导出代理配置对象

javascript

module.exports = PROXY_CONFIG;

使用 module.exports 将 PROXY_CONFIG 对象导出,以便其他模块可以引入并使用这个代理配置。在 Node.js 环境中,这是一种常见的模块导出方式。

6、复制UI_NGX,并用VS_CODE打开

7、安装并启动yarn

  1. 安装 Yarn
    • 全局安装:如果你使用的是 npm,可以通过以下命令全局安装 Yarn:

      bash

      npm install -g yarn
      
  2. 初始化项目
    • 在项目根目录下运行以下命令,会引导你创建一个 package.json 文件,其中包含项目的基本信息和依赖配置。

      bash

      yarn init
      
    • 若要使用默认配置快速创建 package.json,可以添加 -y 选项:

      bash

      yarn init -y
      

依赖管理

  1. 安装依赖
    • 安装所有依赖:在项目根目录下有 package.json 文件时,运行此命令会安装其中指定的所有依赖。

      bash

      yarn install
  2. 运行 start 脚本        

bash

yarn start

7、安装和启动信息 

PS E:\ThingsBoard\front_end\ui-ngx> npm install -g yarn

added 1 package in 5s
npm notice
npm notice New major version of npm available! 10.9.2 -> 11.2.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.2.0
npm notice To update run: npm install -g npm@11.2.0
npm notice
yarn init v1.22.22
question name (thingsboard):
question version (4.0.0):
question description: ui_ngx
question entry point (index.js):
question repository url:
question author:
question license (MIT):
question private (true):
success Saved package.json
Done in 555.72s.
PS E:\ThingsBoard\front_end\ui-ngx> yarn install
yarn install v1.22.22
[1/4] Resolving packages...
warning Resolution field "esbuild@0.23.0" is incompatible with requested version "esbuild@^0.21.3"
$ patch-package
patch-package 8.0.0
Applying patches...
@angular/build@18.2.12 ✔
@angular/core@18.2.13 ✔
@mat-datetimepicker/core@14.0.0 ✔
angular-gridster2@18.0.1 ✔
canvas-gauges@2.1.7 ✔
jquery.terminal@2.44.1 ✔
tooltipster@4.2.8 ✔
Done in 1.47s.
PS E:\ThingsBoard\front_end\ui-ngx> yarn start
yarn run v1.22.22
$ node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve --configuration development --host 0.0.0.0 --open
Node.js version v23.8.0 detected.
Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please see https://nodejs.org/en/about/previous-releases/.

Warning: This is a simple server for use in testing or debugging Angular applications
locally. It hasn't been reviewed for security issues.

Binding this server to an open connection can result in compromising your application or
computer. Using a different host than the one passed to the "--host" flag might result in
websocket connection issues. You might need to use "--disable-host-check" if that's the
case.

Initial chunk files               | Names                 |  Raw size   
chunk-73WDU2OV.js                 | -                     |   4.33 MB | 
main.js                           | main                  | 601.04 kB |
styles.css                        | styles                | 565.29 kB |
polyfills.js                      | polyfills             | 230.87 kB |
scripts.js                        | scripts               | 189.76 kB |
chunk-SI2BA7CY.js                 | -                     | 180.05 kB |
chunk-6CL7JAHA.js                 | -                     |  86.23 kB |
chunk-MENE3GOZ.js                 | -                     |  76.79 kB |
chunk-L2SQKL3C.js                 | -                     |  43.84 kB |
chunk-MZW5XMY2.js                 | -                     |  36.18 kB |
chunk-63M355E4.js                 | -                     |   3.23 kB |
chunk-CKYI7XNO.js                 | -                     |   2.89 kB |
chunk-PSOCTSB3.js                 | -                     |   2.62 kB |

                                  | Initial total         |   6.35 MB

Lazy chunk files                  | Names                 |  Raw size
chunk-NWRSS5AK.js                 | -                     |  15.51 MB |
home-pages.module-LFJCMKVM.js     | home-pages-module     |   2.79 MB |
rulechain-page.module-3Z5SQIAK.js | rulechain-page-module |   1.26 MB |
chunk-ZAW6F6ZR.js                 | -                     | 223.44 kB |
chunk-7YBANKQP.js                 | -                     | 100.16 kB |
map-widget2-SS37WMXJ.js           | map-widget2           |  95.97 kB |
chunk-2ZLQYL36.js                 | -                     |  93.33 kB |
chunk-HL53M2SS.js                 | -                     |  53.31 kB |
chunk-3LGHA4C4.js                 | -                     |  35.64 kB |
mode-tbel-6U5H272S.js             | mode-tbel             |  30.38 kB |
chunk-UEBUGEM2.js                 | -                     |  28.32 kB |
chunk-A5TIOYK5.js                 | -                     |  24.73 kB |
chunk-ND3CTVRE.js                 | -                     |  22.49 kB |
digital-gauge-DWQZBK3I.js         | digital-gauge         |   9.51 kB |
chunk-MQYQLQFT.js                 | -                     |   7.75 kB |
...and 10 more lazy chunks files. Use "--verbose" to show all the files.

Application bundle generation complete. [123.521 seconds]

Watch mode enabled. Watching for file changes...
NOTE: Raw file sizes do not reflect development server per-request transformations.
  ➜  Local:   http://localhost:4200/
  ➜  Network: http://192.168.247.1:4200/
  ➜  Network: http://192.168.43.1:4200/
  ➜  Network: http://192.168.3.11:4200/
  ➜  press h + enter to show help

14:37:59 [vite] http proxy error: /api/noauth/oauth2Clients?platform=WEB
AggregateError
    at internalConnectMultiple (node:net:1139:18)
    at afterConnectMultiple (node:net:1712:7)
Initial chunk files                | Names                  |  Raw size
main.js                            | main                   | 601.04 kB |

Lazy chunk files                   | Names                  |  Raw size
chunk-GF4LRYXW.js                  | -                      |  15.51 MB |
home-pages.module-QPDNUWMQ.js      | home-pages-module      |   2.79 MB |
rulechain-page.module-RFJLOQUU.js  | rulechain-page-module  |   1.26 MB |
chunk-C3C7OJHQ.js                  | -                      | 223.44 kB |
chunk-TLUZPPSJ.js                  | -                      |  93.33 kB |
dashboard-pages.module-CMEL32ZA.js | dashboard-pages-module |   6.09 kB |

Application bundle generation complete. [141.937 seconds]

Page reload sent to client(s).
14:39:31 [vite] http proxy error: /api/noauth/oauth2Clients?platform=WEB
AggregateError
    at internalConnectMultiple (node:net:1139:18)
    at afterConnectMultiple (node:net:1712:7) (x2)

8、以下信息,表示代表服务器错误, 需运行thingsboard后台

9、前端通过4200端口访问后端成功

 

      本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329619.html

      如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

      相关文章

      4G专网:企业数字化转型的关键通信基石

      4G专网 在数字化转型的浪潮下&#xff0c;企业对高可靠性、低时延、安全可控的通信网络需求日益增长。传统的公用蜂窝网络难以满足企业在工业自动化、能源管理、智慧城市等领域的特殊需求&#xff0c;因此4G专网成为众多行业的优先选择。作为行业领先的移动核心网提供商&#x…

      基于FLask的共享单车需求数据可视化分析系统

      【FLask】基于FLask的共享单车需求数据可视化分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统能够整合并处理大量共享单车使用数据&#xff0c;通过直观的可视化手段&#xff0…

      STL 性能优化实战:解决项目中标准模板库的性能瓶颈

      &#x1f9d1; 博主简介&#xff1a;CSDN博客专家、全栈领域优质创作者、高级开发工程师、高级信息系统项目管理师、系统架构师&#xff0c;数学与应用数学专业&#xff0c;10年以上多种混合语言开发经验&#xff0c;从事DICOM医学影像开发领域多年&#xff0c;熟悉DICOM协议及…

      ES使用聚合aggregations实战(自用:2025.04.03更新)

      ES使用聚合aggregations实战 聚合模板桶聚合&#xff1a;Bucket Aggregations指标聚合&#xff1a;Metrics Aggregations管道聚合&#xff1a;Pipeline Aggregations嵌套聚合日期直方图&#xff1a;date-histogram 接口实战接口一&#xff1a;根据stu_id分组统计时间段内的各个…

      AI Agent设计模式四:Evaluator

      概念 &#xff1a;质量验证与反馈机制 ✅ 优点&#xff1a;自动化质量检查&#xff0c;实现持续优化闭环❌ 缺点&#xff1a;评估准确性依赖模型能力 from typing import TypedDict from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, START, …

      AI绘画中的LoRa是什么?

      Lora是一个多义词&#xff0c;根据不同的上下文可以指代多种事物。以下将详细介绍几种主要的含义&#xff1a; LoRa技术 LoRa&#xff08;Long Range Radio&#xff09;是一种低功耗广域网&#xff08;LPWAN&#xff09;无线通信技术&#xff0c;以其远距离、低功耗和低成本的特…

      Linux网络:数据链路层以太网

      目录 认识数据链路层关于以太网1. 基本概念2. 以太网帧格式3. MAC vs IP 认识数据链路层 数据链路层 位于物理层和网络层之间&#xff0c;其作用是将源自物理层来的数据可靠地传输到相邻节点的目标主机的网络层&#xff0c;主要通过物理介质(如以太网&#xff0c;Wi-Fi等)将数…

      MySQL基础 [一] - 数据库基础

      目录 什么是数据库 站在服务器角度理解 站在用户角度理解 为什么不直接使用文件存储呢&#xff1f; 主流数据库 MySQL的基本使用 数据库的使用样例 服务器管理 服务器数据库表之间的关系 MySQL的架构 MySQL语句分类 存储引擎 查看存储引擎 存储引擎对比 什么…

      【华为OD技术面试真题 - 技术面】- Java面试题(17)

      华为OD面试真题精选 专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录 文章目录 华为OD面试真题精选虚拟机分区1. **虚拟磁盘分区**2. **虚拟机的内存分区**3. **CPU分配**4. **虚拟网络分区**5. **存储虚拟化和分区**6. **虚拟机分区管理**…

      #Linux内存管理# 在32bit Linux中,内核空间的线性映射的虚拟地址和物理地址是如何换算的?

      在32位Linux系统中&#xff0c;内核空间的线性映射&#xff08;也称为直接映射或低端内存映射&#xff09;采用固定的偏移量进行虚拟地址和物理地址的换算。以下是详细的转换规则及背景知识&#xff1a; 1. 32位Linux内存布局 用户空间&#xff1a;虚拟地址 0x00000000 到 0x…

      006贪心——算法备赛

      跨步问题 跳跃游戏|| 问题描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j &…

      pytorch中Dropout

      Dropout 是一种常用的正则化技术&#xff0c;用于防止神经网络过拟合。PyTorch 提供了 nn.Dropout 层来实现这一功能。 基本用法 torch.nn.Dropout(p0.5, inplaceFalse) 参数说明&#xff1a; p (float): 每个元素被置为0的概率&#xff08;默认0.5&#xff09; inplace (b…

      【玩泰山派】2、制作buildroot镜像,并烧录

      文章目录 前言制作buildroot镜像过程搭建环境&#xff08;docker版&#xff09;下载泰山派开发的sdk利用制作的镜像和下载的sdk去启动开发docker容器编译buildroot镜像 参考 前言 泰山派官方提供了不少现成的镜像 但是都买了泰山派了&#xff0c;肯定是想自己编译折腾下&…

      初阶数据结构--树

      1. 树的概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做 树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽叶朝下的。 有⼀个特殊的结点&#xff0c;称…

      安装gpu版本的dgl

      1.先去网址&#xff0c;找到对应版本的dgl,然后下载到本地。 dgl-whl下载地址 我的是python 3.8 &#xff0c;cuda 11.6. windows 2.在虚拟环境里 输入 pip install E:\dgl-1.0.2cu116-cp38-cp38-win_amd64.whl &#xff08;因为我下载到E盘里了&#xff09; 这样GPU版本的d…

      5天速成ai agent智能体camel-ai之第1天:camel-ai安装和智能体交流消息讲解(附源码,零基础可学习运行)

      嗨&#xff0c;朋友们&#xff01;&#x1f44b; 是不是感觉AI浪潮铺天盖地&#xff0c;身边的人都在谈论AI Agent、大模型&#xff0c;而你看着那些密密麻麻的代码&#xff0c;感觉像在读天书&#xff1f;&#x1f92f; 别焦虑&#xff01;你不是一个人。很多人都想抓住AI的风…

      FPGA——FPGA状态机实现流水灯

      一、引言 在FPGA开发中&#xff0c;状态机是一种重要的设计工具&#xff0c;用于处理具有时间顺序的事件。本文将详细介绍如何使用状态机实现一个LED流水灯的效果。 二、状态机概述 状态机&#xff08;FSM&#xff09;是一种行为模型&#xff0c;用于表示系统在不同状态下的…

      晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包

      晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包 线刷方法&#xff1a;&#xff08;新手参考借鉴一下&#xff09; 刷机工具版本请用2.2.0以上&#xff0c;导入固件后&#xff0c;刷机工具右侧两个擦除打勾&#xff0c;然后点开始。插上刷机神器&#xf…

      构建第一个ArkTS应用:Hello World之旅

      # 构建第一个ArkTS应用&#xff1a;Hello World之旅 在鸿蒙应用开发的领域中&#xff0c;ArkTS语言为我们提供了强大而便捷的开发方式。今天&#xff0c;就让我们一起踏上构建第一个ArkTS应用——Hello World的奇妙旅程。 ## 一、创建ArkTS工程 1. 首先&#xff0c;我们要使用…

      第十五届单片机模拟考试III

      题目 题目不长 &#xff0c;功能也不难&#xff0c;一道水题 按键功能 S4界面切换&#xff0c;S5 功能切换&#xff0c;在不同界面转换不同的功能&#xff0c;定义两个标志位记录即可。 S9复位&#xff0c;回到初始状态&#xff0c;记得界面也得回到初始的信号界面&#xff0…