Electron应用中TradingView Widget报文件未找到,如何获取缺失文件名?
解决Electron中TradingView Widget的"File not found"错误并定位缺失文件
遇到这个未处理的错误,想要找到具体缺失的文件名,可以通过以下几个步骤排查:
1. 启用TradingView Widget的调试模式
你的初始化代码里已经预留了debug: true的配置,只需要取消注释就能让Widget在控制台输出详细的加载日志,包括哪些文件加载失败:
var widget = new TradingView.widget({ debug: true, // 取消注释开启调试模式 fullscreen: true, symbol: 'AA', interval: 'D', container_id: "tv_chart_container", datafeed: new Datafeeds.UDFCompatibleDatafeed("http://abc.loc/api"), library_path: "../../assets/charting_library/", locale: "en", drawings_access: { type: 'black', tools: [ { name: "Regression Trend" } ] }, disabled_features: ["use_localstorage_for_settings"], enabled_features: ["study_templates"], charts_storage_url: 'http://saveload.tradingview.com', charts_storage_api_version: "1.1", client_id: 'tradingview.com', user_id: 'public_user_id' });
开启后刷新页面,查看Electron的DevTools控制台,就能看到Widget加载过程中所有资源的状态,缺失的文件名会被明确标注出来。
2. 利用Electron DevTools的网络面板定位404资源
打开Electron的开发者工具(快捷键Ctrl+Shift+I或Cmd+Opt+I),切换到Network标签页:
- 勾选"Preserve log"选项,避免刷新后日志丢失
- 刷新dashboard页面
- 查看列表中返回状态为
404的资源,这些就是找不到的文件,点击资源可查看具体请求路径,帮你快速定位问题。
3. 全局监听错误事件捕获详细信息
在dashboard页面的渲染进程代码中添加全局错误监听器,能捕获到更完整的错误堆栈和文件名:
// 放在Widget初始化代码之前 window.addEventListener('error', (event) => { console.error('全局错误详情:', event.error); console.error('缺失文件名:', event.filename); console.error('错误行号:', event.lineno); });
如果是主进程相关的文件错误,也可以在Electron主进程中监听uncaughtException:
// 主进程代码 process.on('uncaughtException', (err) => { console.error('主进程未捕获错误:', err); if (err.path) { console.error('缺失文件路径:', err.path); } });
4. 检查路径配置的正确性
特别注意library_path的相对路径在Electron环境中是否正确——Electron的文件路径逻辑和普通网页不同,建议使用绝对路径避免路径解析错误:
// 使用__dirname拼接绝对路径(假设当前JS文件在src/renderer目录下) const path = require('path'); const libraryAbsolutePath = path.join(__dirname, '../../assets/charting_library/'); var widget = new TradingView.widget({ // ...其他配置项 library_path: libraryAbsolutePath, // ...其他配置项 });
这样能确保Widget准确找到charting_library下的所有依赖文件。
内容的提问来源于stack exchange,提问作者Yur Gasparyan




