You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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+ICmd+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

火山引擎 最新活动