Auto.js Run ReferenceError: “activity“ is not defined. (file:///android_asset/modules/__ui__.js#98)

Auto.js Run ReferenceError: "activity" is not defined. (file:///android_asset/modules/__ui__.js#98)

报错信息

10:16:27.901/E: ReferenceError: "activity" is not defined. (file:///android_asset/modules/__ui__.js#98)
ReferenceError: "activity" is not defined.
    at file:///android_asset/modules/__ui__.js:98:0
    at file:///android_asset/modules/__ui__.js:116:0
    at [remote]demo-auto.js:31:0

报错原因

demo-auto.js
"ui"; 
/* 脚本开头需有字符: "ui"; */
/* 并且此字符必须在脚本有效代码之前(有效代码指注释之外的代码)编写 */
let myapp = {}
myapp.执行数量 = "99"
myapp.delayMin = "2"
myapp.delayMax = "5"

注意:

有些Js开发工程师编辑器设置有格式化掉分号风格,导致"ui"后的;被删掉,在Run 脚本时就会报错。

### 解决 `ExecJS` 程序错误 `ReferenceError: s1 is not defined` 当遇到 `execjs._exceptions.ProgramError: ReferenceError: s1 is not defined` 错误时,这通常意味着 JavaScript 代码中尝试访问了一个未定义的变量或函数 `s1`。为了有效解决问题,可以从以下几个方面入手: #### 检查 JavaScript 文件 确保所使用的 JavaScript 文件中确实包含了名为 `s1` 的变量或函数声明,并且这些声明位于调用之前。如果 `s1` 是通过外部库引入,则需确认该库已被正确加载。 ```javascript // 假设 test.js 中应有如下形式的定义 function s1(param) { // 函数体... } ``` #### 修改 Python 调用逻辑 在 Python 端,在执行编译前先验证目标 JS 方法是否存在并可正常工作。可以考虑增加异常处理机制来捕获潜在问题[^4]。 ```python import execjs try: node = execjs.get() with open("./test.js", encoding="utf-8") as f: js_code = f.read() # 尝试获取上下文环境中的特定对象/方法作为测试 ctx = node.compile(js_code) # 测试是否有 s1 定义 has_s1 = "typeof(s1)=='function'" in ctx.eval("Object.keys(window)") if not has_s1: raise Exception("'s1' function does not exist") except execjs._exceptions.RuntimeException as e: print(f"JavaScript runtime error occurred: {e}") except FileNotFoundError: print("The specified JavaScript file was not found.") except Exception as ex: print(ex) finally: try: result = ctx.call('s1', some_param_here) print(result) except NameError as ne: print(ne) ``` 上述代码片段展示了如何安全地读取和评估 JavaScript 文件内容,同时提供了基本的错误检测功能以帮助定位具体原因所在。 #### 验证依赖项 如果是由于缺少必要的全局对象(如浏览器环境中特有的属性),则可能需要模拟相应的运行时环境或者调整脚本使其不依赖于此类特性。对于某些情况下的缺失(比如 `navigator` 对象),可以通过 Node.js 或其他服务器端 JavaScript 运行时来进行适配[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值