推包调试报错“Error message:cannot find record '&XXX/src/main/ets/YYY&x.y.z', please check the request path.'ZZZ.abc'.”
================================================================================================================

**问题现象**

在使用DevEco Studio推包到设备进行调试时，如果遇到jscrash报错，FaultLog中显示“Error message: cannot find record '&XXX/src/main/ets/YYY&x.y.z'，请检查请求路径 'ZZZ.abc'”。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4e/v3/zVff8wKySU-3jJ8egA8J-Q/zh-cn_image_0000002251128405.png?HW-CC-KV=V1&HW-CC-Date=20260612T074818Z&HW-CC-Expire=86400&HW-CC-Sign=F5A6FBBB8BB1F4602AEB0796AD88AAA0833A2D0B6F1093E270BF868757390DBE)

**问题原因**

**场景一**

字节码HAR（H）使用的依赖包XXX未配置在本模块的oh-package.json5的dependencies或dynamicDependencies中（错误地配置在了工程级oh-package.json5中），请参考[字节码HAR约束条件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har#section38518561610)。

**解决措施**

需要字节码HAR（H）的生产方重新出包，将对XXX包的依赖添加到本模块的oh-package.json5中。

**场景二**

用户在工程级oh-package.json5和模块级oh-package.json5中同时依赖了XXX包的不同版本，请参考[字节码HAR约束条件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har#section38518561610)。

**解决措施：**

措施1：手工修改工程级或模块级oh-package.json5，将XXX的版本调整一致。

措施2：通过工程级oh-package.json5中的overrides字段，覆盖模块中使用的其他版本。

**场景三**

将HSP包转成HAR包后，未删除"packageType"，导致按字节码进行打包的时候未解析其相关依赖，请参考[HSP转HAR指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hsp-to-har#hsp转har的操作步骤)。

**解决措施**

参考"HSP转HAR指导"中的第四步，将模块的oh-package.json5文件中"packageType": "InterfaceHar" 配置删除。

**场景四**

使用了不兼容的第三方插件或SDK对代码进行了修改（如混淆、加固类的SDK），导致了代码无法识别。

**解决措施**

联系对应三方插件或SDK进行解决，如升级版本。

**场景****五**

应用依赖了包XXX，该XXX包在构建时使用了[增量构建](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-incremental-build)的方式，且同时修改了模块级oh-package.json5中的version字段，导致了XXX包中部分文件在寻址时还是用老的版本号去寻址，进而导致找不到相关文件。

**解决措施**

措施1：在XXX包对应工程中执行**Build > Clean Project**操作，然后重新构建项目。

措施2：在工程级hvigorfile.ts文件中增加插件来修复。

1）在工程根目录下新增plugin.ts文件。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/dd/v3/EDgPlSh8TxSan_GtnSg1bA/zh-cn_image_0000002215928680.png?HW-CC-KV=V1&HW-CC-Date=20260612T074818Z&HW-CC-Expire=86400&HW-CC-Sign=4CDD7F57B07830CB019BEFA19872C37ECF944611D84354B3188D8F5D4A8C5073)

plugin.ts文件内容：

import {OhosPluginId, Target} from '@ohos/hvigor-ohos-plugin';
import {hvigor, HvigorNode, HvigorPlugin} from '@ohos/hvigor';
import path from "path";
import fs from "fs";


function getLoaderJsonPath(target: Target) {
  return path.resolve(target.getBuildTargetOutputPath(), \`../../intermediates/loader/${target.getTargetName()}/loader.json\`);
}


function getPkgContextInfoPath(target: Target) {
  return path.resolve(target.getBuildTargetOutputPath(), \`../../intermediates/loader/${target.getTargetName()}/pkgContextInfo.json\`);
}


function deleteLoaderJson(target: Target) {
  const loaderJsonPath = getLoaderJsonPath(target);
  if (fs.existsSync(loaderJsonPath)) {
    fs.rmSync(loaderJsonPath);
  }
}


function deletePkgContextInfo(target: Target) {
  const pkgContextInfoPath = getPkgContextInfoPath(target);
  if (fs.existsSync(pkgContextInfoPath)) {
    fs.rmSync(pkgContextInfoPath);
  }
}


function deleteRollupCache(target: Target, buildMode: string) {
  const arkTSCompileCachePath = path.resolve(target.getBuildTargetOutputPath(),
    \`../../cache/${target.getTargetName()}/${target.getTargetName()}@HarCompileArkTS/esmodule/${buildMode}/compiler.cache\`);
  if (fs.existsSync(arkTSCompileCachePath)) {
    fs.rmSync(arkTSCompileCachePath, { recursive: true });
  }
}


function updateHapHspAbcVersion(subNode: HvigorNode, target: Target) {
  const task = subNode.getTaskByName(\`${target.getTargetName()}@GenerateLoaderJson\`);
  if (!task) {
    console.log('GenerateLoaderJson not found.');
    return;
  }
  deleteLoaderJson(target);
  deletePkgContextInfo(target);
  task.afterRun(() => {
    const pkgContextInfoPath = getPkgContextInfoPath(target);
    if (!fs.existsSync(pkgContextInfoPath)) {
      console.log('pkgContextInfo not found.');
      return;
    }
    const pkgContextInfoObj = JSON.parse(fs.readFileSync(pkgContextInfoPath).toString());
    if (!pkgContextInfoObj) {
      console.log('pkgContextInfo parse failed.');
      return;
    }
    const loaderJsonPath = getLoaderJsonPath(target);
    if (!fs.existsSync(loaderJsonPath)) {
      console.log('loaderJson not found.');
      return;
    }
    const loaderJsonObj = JSON.parse(fs.readFileSync(loaderJsonPath).toString());
    if (!loaderJsonObj) {
      console.log('loaderJson parse failed.');
      return;
    }
    for (const \[key, value\] of Object.entries(pkgContextInfoObj)) {
      if (!value?.version) {
        continue;
      }
      if (!loaderJsonObj.updateVersionInfo\[key\]) {
        loaderJsonObj.updateVersionInfo\[key\] = {};
      }
      loaderJsonObj.updateVersionInfo\[key\]\[key\] = value.version;
    }
    fs.writeFileSync(loaderJsonPath, JSON.stringify(loaderJsonObj));
  });
}


function updateHarAbcVersion(target: Target) {
  deleteLoaderJson(target);
  deleteRollupCache(target, 'debug');
  deleteRollupCache(target, 'release');
}


// The user of bytecode har can use this plugin to correctly modify the version number of ohmurl in abc when integrating bytecode har, ensuring no crashes during runtime
export function updateAbcVersionPlugin(): HvigorPlugin {
  return {
    pluginId: 'updateAbcVersionPlugin',
    apply(node: HvigorNode) {
      hvigor.nodesEvaluated(() => {
        hvigor.getRootNode().subNodes(subNode => {
          let context = subNode.getContext(OhosPluginId.OHOS\_HAP\_PLUGIN);
          if (!context) {
            context = subNode.getContext(OhosPluginId.OHOS\_HSP\_PLUGIN);
          }
          if (!context) {
            return;
          }
          context.targets(target => {
            updateHapHspAbcVersion(subNode, target);
          });
        });
      });
    }
  };
}


// The generator of bytecode har uses this plugin to incrementally build ohmurl with the correct bytecode har after modifying the version number
export function updateHarAbcVersionPlugin(): HvigorPlugin {
  return {
    pluginId: 'updateHarAbcVersionPlugin',
    apply(node: HvigorNode) {
      hvigor.nodesEvaluated(() => {
        hvigor.getRootNode().subNodes(subNode => {
          const context = subNode.getContext(OhosPluginId.OHOS\_HAR\_PLUGIN);
          if (!context) {
            return;
          }
          context.targets(target => {
            updateHarAbcVersion(target);
          });
        });
      });
    }
  };
}

2）在工程级hvigorfile.ts文件中增加两个插件，并执行Sync。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d0/v3/0BfBlc5oQNWEoorHsq5V0A/zh-cn_image_0000002216088460.png?HW-CC-KV=V1&HW-CC-Date=20260612T074818Z&HW-CC-Expire=86400&HW-CC-Sign=58DE88DDD96FB77F162B05361FF953C32ABC9DE982A188841F4A038304A91C5C)

hvigorfile.ts文件内容：

import { appTasks } from '@ohos/hvigor-ohos-plugin';
import { updateAbcVersionPlugin, updateHarAbcVersionPlugin } from './plugin.ts';


export default {
    system: appTasks,  /\* Built-in plugin of Hvigor. It cannot be modified. \*/
    plugins:\[updateAbcVersionPlugin(), updateHarAbcVersionPlugin()\]         /\* Custom plugin to extend the functionality of Hvigor. \*/
}

3) 在Terminal终端执行以下命令后，重新推包运行。

hvigorw --stop-daemon

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/56/v3/7AzVJwpMSuy6QDAPIoQX_w/zh-cn_image_0000002251048357.png?HW-CC-KV=V1&HW-CC-Date=20260612T074818Z&HW-CC-Expire=86400&HW-CC-Sign=23AB03CEC0C683F87F86AD48205CAC7E161BD48BBED1359D4F06D622ACFD493D)