Flask框架下无法加载TradingView的chart.js蜡烛图脚本如何解决
问题原因及修复方案
1. 静态资源引用路径错误
你已将chart.js存入static文件夹,但Flask默认静态资源的访问路径前缀为/static/,你原代码中<script src="chart.js"></script>会从站点根路径寻找资源,对应路径为/chart.js,和实际资源路径不匹配。
你之前尝试使用url_for时错误填写了filename参数为style.css,自然无法加载到chart.js文件。
修复方法:
将script标签的src属性改为以下任意一种即可:
<!-- 写法1:用Flask提供的url_for动态生成路径(推荐) --> <script src="{{ url_for('static', filename='chart.js') }}"></script> <!-- 写法2:硬编码静态资源路径 --> <script src="/static/chart.js"></script>
请先确认你的项目目录结构符合要求:
项目根目录/ ├── app.py(你的Python启动文件) ├── templates/ │ └── index.html └── static/ └── chart.js
2. 内联脚本存在语法错误,阻塞后续脚本执行
你当前页面的内联脚本存在两处致命错误,会触发浏览器抛出异常,导致后续的chart.js脚本不会被执行:
- 你注释了
var binanceSocket = new WebSocket(...)这行声明代码,但后续仍执行console.log(binanceSocket),访问未定义变量会抛出ReferenceError - 注释块末尾多了孤零零的
AbortController字符串,属于无效语法
修复方法:
替换内联脚本为以下内容:
<script> // 提前声明变量避免未定义报错 var binanceSocket; //var binanceSocket = new WebSocket('wss://stream.binance.com:9443/ws/bnbusdt@trade'); console.log(binanceSocket) var tradeDiv = document.getElementById('trades') /* binanceSocket.onmessage = function (event) { console.log(event.data); var messageObject = JSON.parse(event.data) tradeDiv.append(messageObject.p) } */ </script>
3. 可选修复:无效HTML标签
你代码中<int type='text' id='rsi_oversold'>是无效标签,会导致表单渲染异常,建议改为标准input标签:
<input type='text' id='rsi_oversold' name='rsi_oversold' placeholder="30"/>
内容的提问来源于stack exchange,提问作者Yohannes Cahyadi
相关产品推荐
相关产品推荐

