TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 开启 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 开启 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • Ambari Views

    • MDEP-187 从根因到修复
    • Loading node labels问题解决
      • 一、问题出现:前端页面卡在 Loading 状态
      • 二、查看控制台日志
      • 三、定位问题源头(打断点)
      • 四、验证推测与临时修改
        • 1、找到对应文件位置
        • 2、修改 app.js 文件
        • 3、刷新验证
      • 五、彻底修复(源码级改法)
        • 1、补丁内容如下
      • 六、使用 ambari-env 一键修复(推荐)
  • Ambari

  • Ambari-infra

  • Ambari-metrics

  • 报错解决-Ambari
  • Ambari Views
JaneTTR
2025-10-30
目录

Loading node labels问题解决

温馨提示

此内容版本在 ttr-2.2.1 已经修复,低于该版本需要手动处理。有任何问题可以联系作者,或者访问 TTBigdata知识库 (opens new window) 获取其他技术支持。

# 一、问题出现:前端页面卡在 Loading 状态

当页面出现 “Loading node labels” 不动时,第一反应是查看前端。 我们按下 F12 打开开发者工具。

可以看到页面卡住不加载任何节点标签。

# 二、查看控制台日志

在 Console 里发现如下错误信息:

错误详情如下:

SyntaxError: "[object Object]" is not valid JSON
    at JSON.parse (<anonymous>)
    at app.js:1:5639
    at v (vendor.js:16:9515)
    at y (vendor.js:16:9599)
    at m (vendor.js:16:9418)
    at vendor.js:12:2562
    at invoke (vendor.js:5:6789)
    at r.flush (vendor.js:5:7297)
    at i.end (vendor.js:5:2869)
    at i.run (vendor.js:5:3250)
1
2
3
4
5
6
7
8
9
10
11

# 三、定位问题源头(打断点)

我们点击 app.js:1:5639,跳转到具体位置。

接着在这里打上断点,并刷新页面。 这时可以看到变量 t 已经是一个 对象,所以 JSON.parse(t) 一定会报错。

# 四、验证推测与临时修改

我们的推测是:

若 t 是字符串,则调用 JSON.parse();若已是对象,直接返回。

那就改成类型判断的形式。

# 1、找到对应文件位置

我们知道这个 View 的静态资源在 ambari-server 的工作目录中, 路径一般为:

/var/lib/ambari-server/resources/views/work/
1

# 2、修改 app.js 文件

找到出错的代码行,将:

r = JSON.parse(t);
1

改成:

r = typeof t === "string" ? JSON.parse(t) : t;
1

# 3、刷新验证

修改保存后刷新页面。

可以看到页面已正常渲染,不再报错。 “Loading node labels” 也消失了。

临时修复

这种修改属于运行时快速修复,每次重新编译 Ambari Views 都会被覆盖。 建议仅在验证或应急时使用。

# 五、彻底修复(源码级改法)

上面的修改只是修改构建后的 js。 要想 一劳永逸,需要改动源代码。

该功能调用的是 getNodeLabels() 函数,我们在源码中找到:

contrib/views/capacity-scheduler/src/main/resources/ui/app/adapters.js
1

# 1、补丁内容如下

Subject: [PATCH] feature: 解决 scheduler JSON 解析报错
---
Index: contrib/views/capacity-scheduler/src/main/resources/ui/app/adapters.js
===================================================================
@@ -253,7 +253,7 @@
 
     return new Ember.RSVP.Promise(function(resolve, reject) {
       _ajax(uri,'GET').then(function(data) {
-        var parsedData = JSON.parse(data), labels;
+        var parsedData = (typeof data === 'string' && data.trim()) ? JSON.parse(data) : data, labels;
 
         if (parsedData !== null) {
           store.set('isNodeLabelsConfiguredByRM', true);
1
2
3
4
5
6
7
8
9
10
11
12
13

修改说明

  • 增加类型判断,兼容字符串与对象两种返回类型;
  • 避免重复解析已被反序列化的对象;
  • 修复 JSON.parse 触发 SyntaxError 的问题。

修改完成后重新编译 Views 模块:

cd contrib/views
mvn install -DskipTests
1
2

构建成功后刷新页面, 问题彻底解决 🎉。

# 六、使用 ambari-env 一键修复(推荐)

如果你正在使用 ambari-env 编译环境, 直接使用官方补丁路径即可:

https://github.com/TtBigdata/ambari-env/blob/dev/scripts/build/ambari3/common/patch2_2_1/patch2-VIEWS-COMPILE-FIXED.diff
1

该补丁已经包含此修复。

#Ambari#Ambari-Admin#Capacity-Scheduler#Ember#JavaScript#JSON#构建失败
MDEP-187 从根因到修复
phantomjs下载失败问题

← MDEP-187 从根因到修复 phantomjs下载失败问题→

最近更新
01
Ambari开启Kerberos认证加密类型错误 Kylin V10
11-05
02
KERBEROS SERVICE CHECK 报错
11-04
03
Test Kerberos Client报错:Failed to kinit
11-04
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式