JXA加载自定义.scpt脚本库触发Script Editor崩溃如何解决?
问题原因
这个崩溃是macOS JXA运行时的已知兼容性问题,触发原因是你用默认的二进制.scpt格式保存JXA编写的脚本库:系统加载库时会误将JXA格式的编译二进制文件识别为AppleScript格式的sdef描述文件,读取空值后抛出NSInvalidArgumentException异常,直接导致Script Editor崩溃。
修复步骤
- 重新打开脚本编辑器(Script Editor),先在窗口左上角的语言下拉菜单中将默认的「AppleScript」切换为「JavaScript」,再写入你的库代码:
function changeCase(text) { return text.toUpperCase(); }
- 按下Command+S打开保存面板,存储路径选择
~/Library/Script Libraries/,文件名填写Sample Library 2,文件格式必须选择「脚本捆绑包(.scptd)」,不要使用默认的「脚本(.scpt)」格式。 - 保存完成后直接运行测试代码即可正常返回结果:
var lib = Library("Sample Library 2") lib.changeCase("Hello World") // 输出 "HELLO WORLD"
额外注意事项
- JXA库中的可调用方法必须使用普通function语法声明,不能使用箭头函数,必须暴露在全局作用域,否则加载时会识别不到方法。
- 如果遇到文件名匹配失败的问题,可以用绝对路径加载验证:
var lib = Library(Path("~/Library/Script Libraries/Sample Library 2.scptd"))
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

