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

解决Unbox脚本适配VirtualDJ新路径时的path参数类型错误

解决Unbox脚本读取VirtualDJ历史文件路径的报错问题

你碰到的Uncaught Exception: TypeError [ERR_INVALID_ARG_TYPE]报错,核心原因是第520行里的this.windowsHome变量是undefined,导致path.join接收到无效参数,没法完成路径拼接。结合你修改注册表和脚本的操作,按以下步骤修复:

  • 检查注册表读取逻辑
    确认index.js中读取注册表\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下VDJ键的代码是否正常工作:

    • 如果你用的是winreg这类库,要确保查询的键名是VDJ,且没有拼写错误;
    • 64位系统下,需要指定注册表视图为64位(比如new Registry({ hive: Registry.HKCU, key: '...', arch: 'x64' })),否则可能读不到你添加的键值;
    • 调试时可以临时加一行console.log(this.vdjPath)(假设你把读取到的VDJ路径存在这个变量里),确认是否拿到了正确的字符串路径。
  • 替换硬编码的路径拼接代码
    既然已经通过注册表配置了VirtualDJ的根路径,直接用这个路径拼接历史文件,不要再依赖this.windowsHome:
    把第520行的代码:

    path.join(this.windowsHome, 'VirtualDJ\History\tracklist.txt')
    

    修改为:

    // 假设你从注册表读取到的VDJ路径存在this.vdjPath变量中
    path.join(this.vdjPath, 'History/tracklist.txt')
    

    注意把反斜杠改成正斜杠,或者用双反斜杠转义('VirtualDJ\\History\\tracklist.txt'),避免转义错误。

  • 增加参数校验
    在使用VDJ路径前加个判断,防止读取失败导致的undefined:

    if (!this.vdjPath || typeof this.vdjPath !== 'string') {
      console.error('无法读取VirtualDJ路径,请检查注册表配置');
      return;
    }
    const tracklistPath = path.join(this.vdjPath, 'History/tracklist.txt');
    
  • 验证注册表配置
    打开注册表编辑器(运行regedit),定位到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,确认VDJ键的数值数据是VirtualDJ的根目录绝对路径(比如C:\Users\你的用户名\AppData\Local\VirtualDJ),且没有多余的引号或空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:02:50