You need to enable JavaScript to run this app. Angular 1.7与Bootstrap 3 Shift区块链浏览器导航渲染异常求助
优惠活动
大模型
产品
解决方案
定价
更多

Angular 1.7与Bootstrap 3 Shift区块链浏览器导航渲染异常求助

项目背景

我目前正在维护ShiftNrg的一款老旧区块链浏览器,后续团队将整体迁移到全新的区块链平台,在迁移完成前需要持续支持这套从原团队继承的旧代码库。今年初我独立完成了该浏览器的部署托管工作,仅对代码做了最小程度的重构,使其能够在Docker容器中正常运行,此前服务一直稳定运行,直到上周末重新构建Docker镜像后出现异常。

问题描述

我为行情模块新增了用于更新代币价格的API调用,重新构建Docker镜像后发现导航组件不再正常渲染——我并未改动导航相关的代码,甚至将代码回退到2020年2月最后一次稳定提交的版本,导航项依然无法正常渲染。

现象对比
  • 可正常显示导航项的测试站点地址:https://testnet.explorer.shiftnrg.io/
  • 存在导航项缺失问题的线上生产站点地址:https://explorer.shiftnrg.io/
  • 原正常导航效果截图地址:https://i.sstatic.net/sK9uF.png
  • 导航项缺失的异常效果截图地址:https://i.sstatic.net/5xSxk.png
导航组件代码
<div class="navbar navbar-default navbar-fixed-top" role='navigation'>
    <nav class="main-header">
        <div class="container fadein">
            <div id="header" role="navigation" class="navbar navbar-default">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-ng-click="$root.isCollapsed = !$root.isCollapsed">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="/">
                        <div class="logo" title="Shift"></div>
                    </a>
                    <span class="nethash text-center" ng-if="showNethash(blockStatus.nethash | nethash)">{{blockStatus.nethash | nethash}}</span>
                </div>
                <div class="navbar-collapse" data-ng-class="{collapse: $root.isCollapsed}">
                    <search class="navbar-form navbar-left hidden-xs"/>
                    <ul class="nav navbar-nav navbar-right">
                        <currency-selector/>
                        <li class="dropdown" data-uib-dropdown>
                            <a href id="main-menu-dropdown" class="dropdown-toggle tools-menu" data-uib-dropdown-toggle
                               data-aria-haspopup="true" role="button" data-aria-expanded="false">Tools <span
                                    class="caret"></span></a>
                            <ul class="dropdown-menu" role="menu" data-aria-labelledby="main-menu-dropdown">
                                <li>
                                    <a href="/topAccounts" class="top-accounts">Top Accounts</a>
                                </li>
                                <li>
                                    <a href="/activityGraph" class="activity-graph">Activity Graph</a>
                                </li>
                                <li>
                                    <a href="/delegateMonitor" class="delegate-monitor">Delegate Monitor</a>
                                </li>
                                <li data-ng-if="$root.marketWatcher">
                                    <a href="/marketWatcher" class="market-watcher">Market Watcher</a>
                                </li>
                                <li>
                                    <a href="/networkMonitor" class="network-monitor">Network Monitor</a>
                                </li>
                                <li>
                                    <a href="https://wallet.shiftnrg.org/" target="_blank">Wallet Login</a>
                                </li>
                            </ul>
                        </li>

                    </ul>
                </div>

            </div>
        </div>
    </nav>
    <nav class="network-status hidden-xs">
        <div class="container fadein" data-ng-show="blockStatus">
            <div class="row text-left">
                <span class="height col-md-3 col-sm-6">Height: {{blockStatus.height | number:0}}</span>
                <span class="supply col-md-3 col-sm-6">Supply: {{blockStatus.supply | shift | number:0}}</span>
                <span class="shift-btc col-md-3 col-sm-6">SHIFT/BTC: {{currency.tickers.SHIFT.BTC || 'N/A'}}</span>
                <span class="shift-usd col-md-3 col-sm-6">SHIFT/{{currency.tickers.SHIFT[currency.symbol] && currency.symbol !== 'BTC' ? currency.symbol : 'USD'}}: {{currency.tickers.SHIFT[currency.symbol] && currency.symbol !== 'BTC' ? (currency.tickers.SHIFT[currency.symbol] | number:4) : (currency.tickers.SHIFT.USD | number:4) || 'N/A'}}</span>
            </div>
        </div>
    </nav>
</div>
初步排查进展

经过试错验证,我发现ul.nav.navbar-nav.navbar-right容器下仅第一个子组件可以正常渲染,其余组件均无显示。最困扰的是我并未修改package.json文件,也没有改动这些组件的渲染逻辑代码,回退到2020年可正常运行的历史代码也无法解决问题。
我初步怀疑是npm install/yarn执行依赖安装时自动升级了依赖版本导致的异常,但尚未确认;如果确实是依赖自动升级导致的问题,是我没有合理使用package-lock.json文件做版本锁定的疏漏。我并非Angular或Bootstrap的技术专家,希望能够获得可行的修复建议,优先采用补丁式修复方案,避免对整套系统进行大版本重写——毕竟这套浏览器仅需再支撑约12个月就会正式下线退役。

项目package.json配置
{
  "name": "shift-explorer-prototype",
  "version": "1.5.0",
  "description": "prototyped versioni of the Shift Explorer",
  "main": "index.js",
  "keywords": [],
  "author": "",
  "license": "ISC",
  "scripts": {
    "watch": "webpack --watch",
    "start": "webpack --watch & webpack-dev-server --open-page 'webpack-dev-server'",
    "build:dev": "webpack --env=dev --progress --color",
    "build:prd": "webpack --env=prd --progress --color",
    "eslint": "eslint ./benchmarks ./utils ./lib ./api ./src ./test ./features ./tasks ./*.js ./*.json"
  },
  "dependencies": {
    "amstock3": "^3.21.15",
    "angular": "^1.7.9",
    "angular-advanced-searchbox": "^3.0.1",
    "angular-animate": "^1.7.9",
    "angular-gettext": "^2.4.1",
    "angular-naturalsort": "git+https://github.com/isabello/angular-naturalsort.git",
    "angular-qrcode": "^7.2.0",
    "angular-resource": "^1.7.9",
    "angular-ui-bootstrap": "^2.5.6",
    "angular-ui-router": "^1.0.25",
    "async": "^2.6.0",
    "babel-plugin-syntax-dynamic-import": "^6.18.0",
    "benchmark": "^2.1.4",
    "bootstrap": "^3.3.7",
    "bufferutil": "^4.0.1",
    "clipboard": "^2.0.4",
    "ejs": "^3.0.1",
    "express": "^4.17.1",
    "fast-safe-stringify": "^2.0.7",
    "flatstr": "^1.0.12",
    "font-awesome": "^4.7.0",
    "hiredis": "^0.5.0",
    "imports-loader": "^0.8.0",
    "jquery": "^3.5.1",
    "leaflet": "^1.3.1",
    "leaflet.markercluster": "^1.4.1",
    "method-override": "^3.0.0",
    "moment": "^2.24.0",
    "morgan": "^1.9.1",
    "ngprogress": "^1.1.3",
    "popper.js": "^1.16.1",
    "qrcode-generator": "^1.4.4",
    "redis": "^3.0.2",
    "request": "^2.88.2",
    "sigma": "1.2.1",
    "socket.io": "^2.3.0",
    "socket.io-client": "^2.3.0",
    "split": "^1.0.1",
    "underscore": "^1.9.2",
    "utf-8-validate": "^5.0.2"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-plugin-angularjs-annotate": "^0.10.0",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-preset-env": "^1.7.0",
    "chai": "^4.2.0",
    "chai-as-promised": "^7.1.1",
    "clean-webpack-plugin": "^3.0.0",
    "copy-webpack-plugin": "^5.1.1",
    "css-loader": "^3.4.2",
    "cucumber": "^6.0.5",
    "eslint": "^6.8.0",
    "eslint-config-airbnb-base": "^14.0.0",
    "eslint-loader": "^3.0.3",
    "eslint-plugin-import": "^2.20.1",
    "eslint-plugin-json": "^2.1.0",
    "file-loader": "^5.1.0",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "image-webpack-loader": "^6.0.0",
    "mocha": "^7.1.0",
    "popsicle": "^12.0.5",
    "style-loader": "^1.1.3",
    "supertest": "^4.0.2",
    "svg-inline-loader": "^0.8.2",
    "terser-webpack-plugin": "^2.3.5",
    "webpack": "^4.41.6",
    "webpack-cli": "^3.3.11",
    "webpack-dev-server": "^3.11.0"
  },
  "resolutions": {
    "braces": "^2.3.1"
  }

内容的提问来源于stack exchange,提问作者Matt Swezey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 10:15:05