You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Adobe CEP报错'Uncaught ReferenceError: app is not defined'求助

问题解决方案:Uncaught ReferenceError: app is not defined

你遇到的问题核心是对csInterface.evalScript的用法理解有误:evalScript的作用是把ExtendScript代码(Premiere宿主环境的脚本)以字符串形式传递给Adobe应用执行,而你现在直接在浏览器环境调用openImage(filePath),这里的环境根本没有app对象(app是Premiere ExtendScript环境的全局对象),所以才会报错。

另外你的代码里还重复绑定了按钮的点击事件,属于冗余代码,可以清理掉。

修正后的代码

index.js

var csInterface = new CSInterface();
var openButton = document.querySelector("#open-button");

// 只绑定一次点击事件
openButton.addEventListener("click", openDoc);

function openDoc() {
  var filePath = "C:/Users/ADMIN/Downloads/1-a.png";
  // 将ExtendScript代码写成字符串,用模板字符串注入filePath
  csInterface.evalScript(`
    function openImage(filePath) {
        var file = new File(filePath);
        if(file.exists) {
            app.open(file);
        } else {
            alert('文件不存在');
        }
    }
    openImage("${filePath.replace(/"/g, '\\"')}");
  `, function(result) {
    // 可选:处理脚本执行后的结果或错误
    if(result === "undefined") {
      console.log("文件打开成功");
    } else {
      console.error("执行出错:", result);
    }
  });
}

其他文件说明

  • .debug文件:当前配置没问题,确保Premiere已开启CEP调试(比如添加对应注册表项或启用调试模式)。
  • index.html:当前代码没问题,确保CSInterface.js的路径正确(通常放在扩展的js目录下,对应引用路径要匹配)。

关键注意事项

  1. ExtendScript代码必须以字符串形式传递:evalScript的第一个参数是要在Premiere环境执行的脚本字符串,所有依赖app、File这些ExtendScript对象的代码都要放在这个字符串里。
  2. 路径转义:如果文件路径里有引号或特殊字符,要做转义处理,比如上面的replace(/"/g, '\\"'),避免字符串拼接出错。
  3. 错误处理:evalScript的第二个参数是回调函数,可以获取脚本执行的结果或错误信息,方便调试。
  4. Premiere API规范:File对象直接传入路径字符串即可,不需要数组形式;确保app.open的参数符合Premiere的要求。

内容的提问来源于stack exchange,提问作者Imran Bughio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:43:24