HarmonyOS 鸿蒙Next中api9 worker文件后缀问题

HarmonyOS 鸿蒙Next中api9 worker文件后缀问题 api版本:9

deveco studio版本:3.1.1 release

wokers文件路径:D:\harmony_workspace\Test\entry\src\main\ets\workers\SocketWorker.ets

build-profile.json5文件内容:

{
  "apiType": 'stageMode',
  "buildOption": {
    "sourceOption": {
      "workers": [
        "./src/main/ets/workers/SocketWorker.ets"
      ]
    }
  },
  "targets": [
    {
      "name": "default",
      "runtimeOS": "HarmonyOS"
    },
    {
      "name": "ohosTest",
    }
  ]
}

编译报错:

hvigor ERROR: Failed :entry:default@CompileArkTS
hvigor ERROR: ENOENT: no such file or directory, stat ‘D:\harmony_workspace\Test\entry\src\main\ets\workers\SocketWorker.ets.ts’
COMPILE RESULT:FAIL {ERROR:1}
hvigor ERROR: BUILD FAILED in 2 s 606 ms

编译报错里的文件名是SocketWorker.ets.ts,实际应该是SocketWorker.ets


更多关于HarmonyOS 鸿蒙Next中api9 worker文件后缀问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

将错就错,把文件名改为 SocketWorker.ets.ts 可以了。。 build-profile.json5 中 workers 路径是 "./src/main/ets/workers/SocketWorker.ets.ts"

使用:

new worker.ThreadWorker("entry/ets/workers/SocketWorker.ets.ts")

更多关于HarmonyOS 鸿蒙Next中api9 worker文件后缀问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主把build-profile.json5路径修改一下:

"buildOption": {
  "sourceOption": {
    "workers": [ 
      "./entry/src/main/ets/workers/SocketWorker.ets"
    ]
  }
}

避免Hvigor工具自动追加.ts后缀。

工程结构路径改为:

entry/ets/workers/SocketWorker.ets

Worker文件使用.ets扩展名时,配置路径不需要手动添加后缀,这里也改一下:

//无需后缀

new worker.ThreadWorker('entry/ets/workers/SocketWorker')

Hvigor会根据文件类型自动处理后缀,手动添加会导致重复后缀。

build-profile.json5路径是"./src/main/ets/workers/SocketWorker.ets",ide实时检查,用"./entry/src/main/ets/workers/SocketWorker.ets"会提示无效路径

工程路径现在是entry/src/main/ets/workers/SocketWorker.ets,你写的工程路径没有 src/main ?

使用你给的去除后缀的 new worker.ThreadWorker(‘entry/ets/workers/SocketWorker’),依然报错: Could not resolve entry module “entry/src/main/ets/workers/SocketWorker.ets.ts”.

你看看是否文件名包含了ets,而实际文件的扩展名是ts,你在资源管理器里面设置下,让显示下文件扩展名看看

学习了

1.这里编码的时候文件后缀都变了,楼主编译器版本检查一下、清理缓存,然后尝试新建一个ets文件再将里面的内容给复制进去,再替换文件名’D:\harmony_workspace\Test\entry\src\main\ets\workers\SocketWorker.ets.ts’

2.楼主可以看一下这个文件路的处理规范: Worker简介-多线程并发-ArkTS并发-ArkTS(方舟编程语言)-应用框架 - 华为HarmonyOS开发者

建议将这个文件删除重新创建试试

鸿蒙Next中API9的Worker文件后缀为.ets。该文件用于定义Worker线程逻辑,通过主线程的new Worker()接口加载。Worker文件需独立放置于项目目录的ets/workers路径下,编译时会被打包为单独的JS Bundle。Worker线程与主线程通过postMessage()onmessage()进行通信,支持结构化克隆算法传输数据。文件后缀规范是鸿蒙分布式任务调度的基础要求,确保线程隔离与资源正确分配。

编译错误显示系统在查找.ets.ts文件,这是由于在API 9中Worker文件的配置方式发生了变化。请将build-profile.json5中的路径修改为:

"workers": [
  "./src/main/ets/workers/SocketWorker"
]

移除文件后缀.ets,系统在编译时会自动识别并处理ETS文件。这一调整符合HarmonyOS Next的编译规则,可解决文件路径解析异常的问题。

回到顶部