yx_only_office_flutter/docs/TROUBLESHOOTING.md

4.3 KiB
Raw Permalink Blame History

DocsAPI 加载错误故障排除指南

错误信息

📡 事件: onError, 数据: DocsAPI is not loaded. Check server URL.

常见原因和解决方案

1. 服务器 URL 不正确 ⚠️

问题: 您使用的是示例 URL https://doc.example.com/,这不是一个真实的服务器。

解决方案:

  • 使用您自己的 ONLYOFFICE Document Server 地址
  • 确保服务器地址格式正确(不要有多余的斜杠)
# ❌ 错误 - 示例 URL
--dart-define ONLYOFFICE_SERVER_URL=https://doc.example.com/

# ✅ 正确 - 您的实际服务器
--dart-define ONLYOFFICE_SERVER_URL=https://your-real-server.com

2. 服务器无法访问 🌐

检查步骤:

  1. 在浏览器中测试 API 脚本 URL:

    https://your-server.com/web-apps/apps/api/documents/api.js
    

    如果无法打开,说明服务器不可访问。

  2. 检查网络连接:

    # 测试服务器是否可达
    ping your-server.com
    
    # 或使用 curl
    curl -I https://your-server.com/web-apps/apps/api/documents/api.js
    
  3. 检查防火墙和代理设置

3. CORS 问题 🔒

问题: 服务器可能没有启用 CORS导致 WebView 无法加载脚本。

解决方案:

  • 在 ONLYOFFICE Document Server 配置中启用 CORS
  • 检查服务器的 CORS 响应头

4. 脚本路径错误 📁

检查: 确保 API 脚本路径正确:

https://your-server.com/web-apps/apps/api/documents/api.js

常见错误:

  • https://your-server.com/api.js (缺少路径)
  • https://your-server.com/web-apps/api.js (路径不完整)
  • https://your-server.com/web-apps/apps/api/documents/api.js (正确)

5. 服务器配置问题 ⚙️

检查 ONLYOFFICE Document Server 配置:

  1. 确保 Document Server 正在运行
  2. 检查服务器日志
  3. 验证 API 端点是否正常

调试步骤

步骤 1: 验证服务器 URL

在代码中添加调试输出:

void main() {
  print('=== 服务器配置检查 ===');
  print('Server URL: $_serverUrl');
  print('File URL: $_fileUrl');
  print('Expected API URL: $_serverUrl/web-apps/apps/api/documents/api.js');
  print('====================');
  
  runApp(const AdvancedDemoApp());
}

步骤 2: 在浏览器中测试

  1. 打开浏览器
  2. 访问 API 脚本 URL:
    https://your-server.com/web-apps/apps/api/documents/api.js
    
  3. 如果能看到 JavaScript 代码,说明服务器正常
  4. 如果看到 404 或连接错误,说明服务器配置有问题

步骤 3: 检查 WebView 控制台

在应用运行时,查看 WebView 的 JavaScript 控制台输出:

  • Android: 使用 adb logcat 查看日志
  • iOS: 使用 Xcode 控制台查看日志

步骤 4: 测试网络连接

// 在应用启动时测试连接
Future<void> testServerConnection() async {
  try {
    final url = Uri.parse('$_serverUrl/web-apps/apps/api/documents/api.js');
    final response = await http.head(url);
    
    if (response.statusCode == 200) {
      print('✅ 服务器连接正常');
    } else {
      print('❌ 服务器返回错误: ${response.statusCode}');
    }
  } catch (e) {
    print('❌ 无法连接到服务器: $e');
  }
}

快速检查清单

  • 服务器 URL 是真实的,不是示例 URL
  • 服务器 URL 格式正确(没有多余的斜杠)
  • 可以在浏览器中访问 API 脚本 URL
  • 网络连接正常
  • 服务器已启用 CORS
  • Document Server 正在运行
  • 防火墙没有阻止连接

常见服务器 URL 格式

标准安装

https://documentserver.example.com

子路径安装

https://example.com/documentserver

本地开发

http://localhost:8080

注意: 本地开发时Android 模拟器使用 10.0.2.2 而不是 localhost:

http://10.0.2.2:8080

获取帮助

如果以上步骤都无法解决问题:

  1. 检查服务器日志: 查看 ONLYOFFICE Document Server 的日志文件
  2. 查看浏览器控制台: 在浏览器中打开编辑器,查看是否有错误
  3. 测试官方示例: 在浏览器中测试 ONLYOFFICE 官方示例是否正常工作
  4. 联系服务器管理员: 确认服务器配置是否正确

改进的错误信息

新版本的插件会提供更详细的错误信息,包括:

  • 完整的脚本 URL
  • 检查清单
  • 建议的解决方案

请确保使用最新版本的代码。