# 编译构建时报错：配置错误问题汇总

编译构建时报错的常见配置类错误汇总如下：

| 问题现象 | 问题原因 |
| --- | --- |
| 构建报错：hvigor ERROR: 00303038 Configuration Error Schema validate failed. | Schema校验失败。 |
| 构建报错：The type of the target device does not match the deviceType configured in the module.json5 file of the selected module. | targets的deviceType和module.json5中的deviceTypes不匹配。 |
| 构建报错：hvigor ERROR: EINVAL: invalid argument. | 项目文件路径过长，导致SDK的路径拼接失效。 |
| 构建报错：hvigor ERROR: Tools execution failed. spawn Unknown system error -86. | Command Line Tools与DevEco Studio的版本未配套使用。 |
| 构建报错：hvigor ERROR: Debug Failure. False expression: Script kind should match provided ScriptKind and sourceFile.scriptKind. | 文件扩展名与编译器内部标记的脚本类型不一致。 |
| 构建报错：hvigor ERROR：The @ohos/hvigor-ohos-plugin version () is not within the expected range 2.xx(2.xx >= 2.4.0) | 内置的hvigor依赖版本不正确。 |
| 构建报错：Unknown resource name 'XXX'. | 资源没有定义。 |
| 构建报错：ERROR: SDK component missing. | SDK未找到。 |

#### 问题现象

*   **场景一：构建报错：hvigor ERROR: 00303038 Configuration Error Schema validate failed.**
    
*   **场景二：构建报错：The type of the target device does not match the deviceType configured in the module.json5 file of the selected module.**
*   **场景三：构建报错：hvigor ERROR: EINVAL: invalid argument.**
    
    项目在Mac上的DevEco Studio上正常运行，放到Windows 11上的DevEco Studio运行报错：
    
    ```
    hvigor ERROR: EINVAL: invalid argument, mkdir 'xxx\xxx\...\debug
    ```
    
*   **场景四：构建报错：hvigor ERROR: Tools execution failed. spawn Unknown system error -86.**
    
    ```
    > hvigor ERROR: Failed :entry:main_sit@CompileResource...
    > hvigor ERROR: Tools execution failed.
    spawn Unknown system error  -86
    > hvigor ERROR: BUILD FAILED in 4 s 333 ms.
    > hvigor ERROR: comp_platform_api:default@ProcessLibs is not an	incremental task.
    > hvigor ERROR: comp_router:default@ProcessLibs is not an incremental task.
    > hvigor ERROR: comp_pullrefresh:default@ProcessLibs is not an incremental task.
    ```
    
*   **场景五：构建报错：hvigor ERROR: Debug Failure. False expression: Script kind should match provided ScriptKind and sourceFile.scriptKind.**
    
    常见报错日志如下：
    
    ```
    > hvigor ERROR: Debug Failure. False expression: Script kind should match provided ScriptKind:8 and sourceFile.scriptKind: 3, !entry: false
    COMPILE RESULT:FAIL {ERROR:1}
    > hvigor ERROR: BUILD FAILED in 5 s 855 ms
    Process finished with exit code -1
    ```
    
    或者：
    
    ```
    > hvigor ERROR: Debug Failure. False expression: Script kind should match provided ScriptKind:3 and sourceFile.scriptKind: 8, !entry: false
    COMPILE RESULT:FAIL {ERROR:1}
    ```
    
*   **场景六：构建报错：hvigor ERROR：The @ohos/hvigor-ohos-plugin version () is not within the expected range 2.xx(2.xx >= 2.4.0)**
*   **场景七：构建报错：Unknown resource name 'XXX'**
    
    ```
    > hvigor Finished :entry:default@BuildJS... after 5 ms
    > hvigor ERROR: Failed :entry:default@HotReloadArkTS...
    > hvigor ERROR: ArkTS:ERROR File: /Users/xxx/Desktop/code/demo-flutter/ohos/entry/src/main/ets/form/provider/ImageProvider.ets:26:17
    Unknown resource name 'gcar\_default\_vehicle\_v446k'.
    > hvigor ERROR: BUILD FAILED in 47 s 787 ms
    ```
    

#### 背景知识

编译构建错误码中的配置错误码参考：配置错误码。

#### 问题定位

*   **场景一：**
    1.  根据报错信息中的错误码00303038可知，出现该报错是因为Schema校验失败。
    2.  进一步查看具体的报错信息，可以确定是build-profile.json5文件中的app字段，包含了不被允许的属性capabilities。
    3.  查看app字段的配置可知，capabilities字段从DevEco Studio 6.0.0 Beta5版本开始支持。查看DevEco Studio版本是否低于DevEco Studio 6.0.0 Beta5版本。
*   **场景二：**
    
    根据报错信息，可以确认是模块级build-profile.json5文件中targets下指定的deviceType字段不是src/main/module.json5中配置的deviceTypes字段的子集。
    
*   **场景三：**
    
    检查项目文件路径是否过长。Windows系统的文件路径长度限制为260个字符（包括盘符和反斜杠）。超过这个限制的路径可能会导致各种问题，包括应用程序无法正确处理。在处理超长路径时，Windows系统会在路径的起始部分拼接一个正斜杠（/）或者问号（?）来解决这个问题。
    
*   **场景四：**
    
    排查Command Line Tools的版本与DevEco Studio的版本是否一致。
    
*   **场景五：**
    
    根据报错信息可知，文件扩展名与编译器内部标记的脚本类型不一致，常见于DevEco Studio构建的缓存问题。
    
*   **场景六：**
    
    根据报错信息可知，内置的hvigor依赖版本不正确。
    
*   **场景七：**
    
    根据错误信息可知，对应资源\_v446k未定义。
    

#### 分析结论

*   场景一：Schema校验失败。
*   场景二：targets的deviceType和module.json5中的deviceTypes不匹配。
*   场景三：项目文件路径过长，导致SDK的路径拼接失效。
*   场景四：Command Line Tools与DevEco Studio的版本未配套使用。
*   场景五：文件扩展名与编译器内部标记的脚本类型不一致。
*   场景六：内置的hvigor依赖版本不正确。
*   场景七：资源没有定义。

#### 修改建议

*   **场景一：提供以下两种方案，推荐使用方案一。**
    *   方案一：下载并安装最新的DevEco Studio版本，保证该版本支持在build-profile.json5文件中的app中配置capabilities字段。
    *   方案二：删除capabilities字段。
*   **场景二：提供以下两种方案。**
    *   方案一：修改模块级build-profile.json5文件中targets下指定的deviceType字段，确保该deviceType字段是src/main/module.json5中配置的deviceTypes字段的子集。
    *   方案二：修改src/main/module.json5中配置的deviceTypes字段，确保模块级build-profile.json5文件中targets下指定的deviceType字段是src/main/module.json5中配置的deviceTypes字段的子集。
*   **场景三：将项目放到更短的文件路径下打开。**
*   **场景四：下载并安装Command Line Tools和DevEco Studio配套的版本。**
*   **场景五：**
    *   步骤一：清除缓存后重新构建。
        1.  Build -> Clean Project。
        2.  手动删除oh\_modules文件夹后执行ohpm install。
        3.  重新构建项目。
        4.  若清除缓存后还是报错。在hvigor-config.json5中设置"debugging":{stacktrace:true}，查看详细堆栈报错。
    *   步骤二：排查并修改hvigor-config.json5和oh-package.json5中的modelVersion字段，使其与当前工具版本匹配。例如："modelVersion": "6.0.2"。
*   **场景六：**
    1.  更新最新的DevEco Studio，新版本hvigor依赖内置，不需要添加依赖。
    2.  若更新DevEco Studio还报错，进行如下配置：在hvigor-config.json5中配置和当前工具匹配的modelVersion版本，如："modelVersion": "6.0.2"。
*   **场景七：**
    
    根据报错的资源标签到entry\\src\\main\\resources\\base目录下查看该资源是否存在，如果是图片资源在media子目录，如果是字符串在element子目录，不存在的话需要补充对应的资源。