Appearance
常见问题排除指南
本文档提供Eagle2Ae AE扩展常见问题的解决方案和故障排除步骤。
连接问题
问题1: 无法连接到Eagle插件
症状:
- 扩展显示"连接中"状态但无法建立连接
- 控制台显示连接超时错误
- WebSocket连接失败
可能原因:
- Eagle插件未启动或未安装
- 端口被其他程序占用
- 防火墙阻止连接
- 网络配置问题
解决方案:
检查Eagle插件状态:
- 确认Eagle应用程序正在运行 - 检查Eagle插件是否已安装并启用 - 重启Eagle应用程序检查端口占用:
bash# Windows netstat -ano | findstr :8080 # macOS/Linux lsof -i :8080尝试不同端口:
- 在AE扩展设置中修改通信端口
- 尝试端口范围:8080-8089
- 重启AE扩展
检查防火墙设置:
- 允许After Effects通过防火墙
- 允许Eagle通过防火墙
- 临时关闭防火墙测试
使用HTTP轮询模式:
javascript// 在扩展设置中启用HTTP轮询 this.useWebSocket = false; this.fallbackToHttp = true;
问题2: 连接频繁断开
症状:
- 连接建立后很快断开
- 频繁的重连尝试
- 不稳定的通信
解决方案:
调整心跳间隔:
javascript// 减少心跳间隔 this.heartbeatInterval = 15000; // 15秒增加重连次数:
javascriptthis.maxReconnectAttempts = 10; this.reconnectDelay = 3000;检查网络稳定性:
- 测试本地网络连接
- 检查是否有网络代理
- 尝试有线连接替代WiFi
文件导入问题
问题3: 文件导入失败
症状:
- 文件无法导入到AE项目
- 显示"文件不存在"错误
- 导入过程中断
可能原因:
- 文件路径包含特殊字符
- 文件权限不足
- 文件格式不支持
- AE项目未保存
- 合成未选择
解决方案:
检查文件路径:
javascript// 确保路径使用正确的分隔符 const normalizedPath = filePath.replace(/\\/g, '/');验证文件权限:
- 确保AE有读取文件的权限
- 检查文件是否被其他程序锁定
- 尝试复制文件到临时目录
检查文件格式:
- 支持的图片格式:JPG, PNG, TIFF, PSD等
- 支持的视频格式:MP4, MOV, AVI等
- 支持的音频格式:WAV, MP3, AIFF等
确保项目状态:
javascript// 检查项目是否已保存 if (!app.project.file) { alert('请先保存AE项目'); return; }
问题4: 中文文件名显示乱码
症状:
- 中文文件名显示为乱码或问号
- 文件导入后名称错误
解决方案:
启用强制解码:
javascript// 在hostscript.jsx中已实现 // v2.1.1版本自动处理中文文件名检查系统编码:
- Windows: 确保系统区域设置正确
- macOS: 检查系统语言设置
文件名预处理:
javascript// 避免使用特殊字符 const safeName = fileName.replace(/[<>:"/\\|?*]/g, '_');
性能问题
问题5: 扩展启动缓慢
症状:
- AE启动时扩展加载时间过长
- 界面响应缓慢
解决方案:
禁用端口发现:
javascriptthis.enablePortDiscovery = false;优化轮询间隔:
javascript// 增加轮询间隔 const pollingManager = new PollingManager(callback, 1000);减少日志输出:
javascript// 在生产环境中减少DEBUG日志 if (process.env.NODE_ENV === 'production') { this.logLevel = 'INFO'; }
问题6: 内存占用过高
症状:
- AE内存使用量异常增长
- 系统响应变慢
- 可能出现内存不足错误
解决方案:
及时清理资源:
javascript// 清理事件监听器 window.removeEventListener('beforeunload', this.cleanup); // 清理定时器 clearInterval(this.pollingInterval); // 清理WebSocket连接 if (this.webSocketClient) { this.webSocketClient.disconnect(); }限制缓存大小:
javascript// 限制日志缓存 if (this.logs.length > 1000) { this.logs = this.logs.slice(-500); }优化文件处理:
javascript// 分批处理大量文件 const batchSize = 10; for (let i = 0; i < files.length; i += batchSize) { const batch = files.slice(i, i + batchSize); await this.processBatch(batch); }
兼容性问题
问题7: AE版本兼容性
症状:
- 扩展在某些AE版本中无法正常工作
- API调用失败
解决方案:
检查AE版本:
javascriptconst aeVersion = parseFloat(app.version); if (aeVersion < 15.0) { alert('需要After Effects CC 2018或更高版本'); return; }使用兼容性API:
javascript// 检查API可用性 if (typeof app.project.importFile !== 'undefined') { // 使用新API } else { // 使用旧API或提示升级 }
问题8: 操作系统兼容性
症状:
- 在某些操作系统上功能异常
- 路径处理错误
解决方案:
跨平台路径处理:
javascript// 统一路径分隔符 const path = filePath.replace(/\\/g, '/'); // 检查操作系统 const isWindows = navigator.platform.indexOf('Win') > -1; const isMac = navigator.platform.indexOf('Mac') > -1;平台特定代码:
javascriptif (isWindows) { // Windows特定处理 } else if (isMac) { // macOS特定处理 }
调试技巧
启用调试模式
CEP调试:
- 运行enable_cep_debug_mode.reg - 在Chrome中访问:http://localhost:8092 - 选择对应的扩展进行调试增强调试:
- 运行enable_cep_debug_enhanced.reg - 启用更详细的调试信息日志调试:
javascript// 启用详细日志 this.logManager.setLevel('DEBUG'); // 查看日志文件 console.log('日志路径:', this.logManager.getLogPath());
常用调试命令
javascript
// 检查连接状态
console.log('连接状态:', aeExtension.getConnectionState());
// 检查项目信息
aeExtension.csInterface.evalScript('getProjectInfo()', (result) => {
console.log('项目信息:', result);
});
// 测试ExtendScript连接
aeExtension.csInterface.evalScript('testExtendScriptConnection()', (result) => {
console.log('ExtendScript状态:', result);
});
// 检查端口状态
fetch('http://localhost:8080/api/status')
.then(response => response.json())
.then(data => console.log('Eagle状态:', data))
.catch(error => console.error('连接失败:', error));获取帮助
如果以上解决方案无法解决您的问题,请:
收集诊断信息:
- AE版本和操作系统信息
- 扩展版本号
- 错误日志和控制台输出
- 重现问题的具体步骤
联系支持:
- 在项目仓库创建Issue
- 提供详细的问题描述
- 附上相关日志文件
社区支持:
- 查看项目文档和FAQ
- 参与社区讨论
- 搜索已知问题和解决方案
预防措施
定期更新:
- 保持扩展版本最新
- 及时更新AE和Eagle
- 关注版本兼容性说明
备份配置:
- 定期备份扩展设置
- 保存重要的项目配置
- 记录自定义设置
监控性能:
- 定期检查内存使用
- 监控连接稳定性
- 及时清理临时文件
测试环境:
- 在测试项目中验证新功能
- 避免在重要项目中使用未测试的功能
- 保持开发和生产环境分离
时间轴设置问题
问题: 导入的图层位置不正确
症状:
- 设置为"当前时间"模式,但图层仍放置在时间轴开始位置
- 图层位置与预期的时间轴设置不符
- 时间轴设置似乎不生效
可能原因:
- 时间轴设置检查逻辑错误(v2.1.1及之前版本的已知问题)
- 设置传递过程中丢失或被覆盖
- ExtendScript执行时设置解析错误
解决方案:
升级到v2.1.2或更高版本:
v2.1.2版本修复了时间轴设置检查逻辑错误 将检查条件从timelineOptions.enabled改为timelineOptions.placement验证设置配置:
javascript// 检查设置是否正确配置 console.log('timelineOptions:', settingsManager.getSettings().timelineOptions); // 应该显示: { enabled: true, placement: 'current_time' }检查ExtendScript日志:
javascript// 在hostscript.jsx中查看调试日志 console.log('[时间轴设置] placement模式:', settings.timelineOptions.placement); console.log('[时间轴设置] 当前合成时间:', targetComp.time);手动验证时间轴位置:
- 在AE中移动时间指针到特定位置
- 执行导入操作
- 检查图层是否放置在正确的时间位置
重置设置:
javascript// 如果问题持续,尝试重置时间轴设置 settingsManager.resetTimelineOptions();
预防措施:
- 定期检查扩展版本,确保使用最新版本
- 在重要项目中使用前,先在测试项目中验证时间轴设置
- 启用调试模式以便查看详细的执行日志
UI与交互问题
问:为什么新版总结对话框里找不到“打开文件夹”或“导出”按钮了?
答: 这是 v2.3.0 版本有意为之的UI简化。为了界面更整洁,我们移除了行内按钮,并将交互统一为直接点击图层名称的文本。
- 普通素材图层:点击名称 = 打开文件夹。
- 设计文件/合成图层:点击名称 = 导出图层。
问:为什么我的形状(或文本)图层添加了蒙版(Mask)后,就检测为“不可导出”了?
答: 这是系统设定的规则。检测逻辑对带有蒙版的图层有特殊处理:
- 对于素材文件图层(如图片、视频),即使有蒙版,通常仍可导出。
- 对于形状或文本等非素材图层,一旦添加了蒙版,就会被视为复杂对象,从而变为不可导出,以确保导出结果的可预见性。
问:为什么我的图像序列(如 image_0001.png, image_0002.png...)被检测为“不可导出”?
答: 系统能自动识别出图像序列,但目前版本暂不支持对整个序列的导出功能。因此,它会被正确地识别并标记为“不可导出”,同时提示“序列帧暂不支持导出”。