使用DevEco Studio 6.1.1版本创建元服务编译不通过

使用DevEco Studio 6.1.1版本创建元服务编译不通过 我选择模板元服务Empty Ability

"targetSdkVersion": "6.1.0(23)",
"compatibleSdkVersion": "6.1.0(23)"

使用mate 60进行调试,手机系统版本为6.1.0

E:\DevEcoStudio\tools\node\node.exe E:\DevEcoStudio\tools\hvigor\bin\hvigorw.js --mode module -p module=entry@default -p product=default -p requiredDeviceType=phone assembleHap --analyze=normal --parallel --incremental --daemon

hvigor Finished :entry:default@PreBuild… after 119 ms

hvigor Finished :entry:default@CreateModuleInfo… after 1 ms

hvigor UP-TO-DATE :entry:default@GenerateMetadata

hvigor Finished :entry:default@ConfigureCmake… after 1 ms

hvigor Finished :entry:default@MergeProfile… after 3 ms

hvigor Finished :entry:default@CreateBuildProfile… after 2 ms

hvigor Finished :entry:default@PreCheckSyscap… after 1 ms

hvigor UP-TO-DATE :entry:default@GeneratePkgContextInfo

hvigor Finished :entry:default@GeneratePkgSdkInfo… after 3 ms

hvigor Finished :entry:default@ProcessIntegratedHsp… after 1 ms

hvigor Finished :entry:default@BuildNativeWithCmake… after 1 ms

hvigor Finished :entry:default@MakePackInfo… after 2 ms

hvigor Finished :entry:default@SyscapTransform… after 3 ms

hvigor Finished :entry:default@ProcessProfile… after 73 ms

hvigor UP-TO-DATE :entry:default@ProcessRouterMap

hvigor UP-TO-DATE :entry:default@ProcessShareConfig

hvigor Finished :entry:default@ProcessStartupConfig… after 2 ms

hvigor Finished :entry:default@BuildNativeWithNinja… after 1 ms

hvigor UP-TO-DATE :entry:default@ProcessResource

hvigor UP-TO-DATE :entry:default@GenerateLoaderJson

hvigor Finished :entry:default@ProcessLibs… after 2 ms

hvigor Finished :entry:default@CompileResource… after 337 ms

hvigor UP-TO-DATE :entry:default@DoNativeStrip

hvigor Finished :entry:default@BuildJS… after 3 ms

hvigor UP-TO-DATE :entry:default@CacheNativeLibs

hvigor ERROR: Failed :entry:default@CompileArkTS

hvigor ERROR: Error Code: 00308018 Unknown Error

ENOTDIR: not a directory, scandir ‘E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools\ets-loader\components’

COMPILE RESULT:FAIL {ERROR:1}

Run with --stacktrace option to get the stack trace.

Run with --debug option to get more log output.

hvigor ERROR: BUILD FAILED in 3 s 140 ms


9 回复

尊敬的开发者,您好,本地 Windows 11 验证,打开此目录,右键查看属性时显示有文件存在,所以可能不是Windows的Bug,可能是更新DevEco Studio时SDK安装不完整或损坏。尝试完全卸载DevEco Studio,重新安装。

  • 完全卸载DevEco Studio
  • 删除SDK目录
  • 删除用户目录下的缓存(C:\Users\您的用户名\AppData\Local\Huawei)
  • 重新下载并安装最新版DevEco Studio

重新安装后,再次检查一下目录,若无问题,重新打开项目,检查编译是否成功。


大致问题应该知道了。我这个目录里面都是有东西,但是右键属性却提示没有文件,我用其他工具也是无法访问到这个目录的,是windows的bug吗?有人知道什么原因不? 我把这个目录拷贝到桌面,也是一样的

这个问题从报错信息来看,不是代码问题,而是 DevEco Studio 6.1.1 或 SDK 安装异常导致的构建环境问题

关键报错:

Error Code: 00308018

ENOTDIR: not a directory, scandir
'E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools\ets-loader\components'

其中:

scandir xxx/components
ENOTDIR: not a directory

表示编译器准备扫描:

E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools\ets-loader\components

这个目录时发现:

  • 要么这个路径不存在
  • 要么 components 被错误地安装成了文件
  • 要么 ets-loader 安装不完整
  • 要么 SDK 升级过程中目录结构损坏

第一步:先检查目录

直接打开:

E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools\ets-loader

看看里面是否存在:

components

正常情况应该是:

ets-loader
 ├─ bin
 ├─ lib
 ├─ components
 ├─ package.json

如果看到:

components

是个文件而不是文件夹,

或者根本不存在,

那就找到原因了。


第二步:检查 SDK 是否安装完整

进入:

DevEco Studio
Settings
HarmonyOS SDK

检查:

HarmonyOS SDK 6.1.0(API23)

是否完整安装。

重点检查:

ArkTS
ETS
Build Tools

几个组件。

很多开发者升级到:

DevEco Studio 6.1.1

后出现过:

SDK下载不完整
ets-loader缺失

的问题。


第三步:删除 ets 目录重新下载

建议直接删除:

E:\DevEcoStudio\sdk\default\openharmony\ets

然后:

SDK Manager
→ Remove
→ 重新安装 API23

重新下载。

因为:

ets-loader

属于 SDK 内置工具,

不是项目生成的。

只要这里坏了,

所有 ArkTS 工程都会编译失败。


第四步:确认是不是元服务模板 Bug

你说:

"targetSdkVersion": "6.1.0(23)"

并且:

Empty Ability(元服务)

新建项目直接报错。

这种情况很像:

DevEco Studio 6.1.1 + API23

已知存在部分安装环境下:

ets-loader/components

路径解析异常。

可以验证一下:

新建普通 Application

File
→ New Project
→ Application
→ Empty Ability

编译看看。

如果:

普通应用正常
元服务失败

就是模板问题。

如果:

普通应用也失败

就是 SDK 损坏。


第五步:查看 components 实际状态

Windows命令行执行:

dir E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools\ets-loader

或者:

dir /a

看看:

components

到底是什么。

正常应看到:

<DIR> components

如果是:

components

没有 <DIR>

说明被错误覆盖成文件了。


第六步:查看是否安装到了错误 SDK

很多机器同时存在:

sdk\default\hms
sdk\default\openharmony

建议确认:

File
→ Project Structure
→ SDK Location

是否指向:

E:\DevEcoStudio\sdk\default

而不是旧版本 SDK。


根据你的报错,我判断概率最大的原因

按概率排序:

① SDK中的 ets-loader 损坏(80%)

表现:

ENOTDIR
scandir ets-loader/components

最符合。

解决:

删除 SDK
重新安装 API23

② DevEco Studio 6.1.1 安装异常(15%)

解决:

卸载 6.1.1
重新安装 6.1.1

或者回退:

6.1.0 Release

③ 元服务模板 Bug(5%)

验证方法:

新建普通 Application

测试是否能编译。


建议你先把下面两个目录截图出来:

E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools\ets-loader

以及

E:\DevEcoStudio\sdk\default\openharmony\ets\build-tools

我基本就能直接判断是 SDK 缺文件、目录结构错误,还是 6.1.1 的模板问题。

这个错误更像本地 DevEco Studio / SDK 构建工具损坏,不像手机或元服务模板问题。关键日志是 ArkTS 编译阶段扫描 ets-loader/components 失败,并提示 ENOTDIR,说明编译器预期那里是目录,但实际文件结构不对或 SDK 安装残缺。

建议按这个顺序排查:先关闭 DevEco Studio,结束残留 node、hvigor 进程;再删除项目里的 .hvigor、build、entry/build 缓存;然后执行 Invalidate Caches / Restart。若仍失败,到 SDK Manager 里重新安装或修复 6.1.0 / API 23 的 HarmonyOS SDK、ArkTS build tools。

再做一个空元服务 Empty Ability 项目验证:如果空项目也在 CompileArkTS 报同样错误,基本就是 IDE/SDK 环境问题;如果空项目正常,再回头查原项目配置。参考来源:DevEco Studio 编译构建 FAQ、SDK Manager 使用说明、ArkTS 编译构建文档。

很喜欢HarmonyOS的卡片式设计,信息一目了然,操作也更便捷。

可以尝试清理缓存,或者重启后试试

DevEco Studio 6.1.1 创建元服务编译失败,常见原因:

  1. 项目配置的 compileSdkVersion 与本地 SDK 不匹配(需 ≥ API 12 或对应元服务版本)。
  2. 元服务模块缺少 type: "atomicService"distroFilter 配置错误。
  3. 签名证书未设置为元服务专用证书(HarmonyOS App/元服务需不同证书)。
    检查 build-profile.json5signingConfigs 配置,确保依赖库版本兼容。

该错误是因为 SDK 中 ets/build-tools/ets-loader/components 路径损坏或缺失导致。请按以下步骤修复:

  1. 关闭 DevEco Studio。
  2. 删除 E:\DevEcoStudio\sdk\default\openharmony\ets 整个文件夹。
  3. 重新打开 DevEco Studio,进入 SDK Manager(设置 → SDK),勾选 HarmonyOS 下的 Ets 组件,点击应用并等待下载完成。
  4. 重新编译项目。

若仍失败,请检查该 SDK 路径权限是否为只读,或尝试切换 SDK 安装至其他非系统盘目录。

回到顶部