有没有HarmonyOS鸿蒙Next大佬帮助解决代码合并后多出文件需手动删除的问题

有没有HarmonyOS鸿蒙Next大佬帮助解决代码合并后多出文件需手动删除的问题 cke_616.png

每次代码跑起来都会报这个错误,必须把红框里面的包删除才可以跑起来,有没有知道怎么解决的呢。是之前合并别人代码后出的问题,现在已经都合并了。该如何解决在线求助


更多关于有没有HarmonyOS鸿蒙Next大佬帮助解决代码合并后多出文件需手动删除的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

先同步好有问题的oh_modules的本地和远程Git库。
Terminal 在oh_modules同级目录:

  • git rm -r -cached oh_modules
  • git commit -m “删除oh_modules”
  • git push

然后通知其他人以后不要再上传这个oh_modules。

更多关于有没有HarmonyOS鸿蒙Next大佬帮助解决代码合并后多出文件需手动删除的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好,修改 .gitignore 文件,

1、增加忽略文件,**/oh_modules ,所有目录下的 oh_modules 都会忽略。

**/oh_modules
**/build
**/.hvigor

2、清除 Git 缓存,立即生效。分别执行下面git命令

git rm -r --cached .
git add .
git commit -m "chore: 全局忽略所有 oh_modules"

这个大概率不是代码本身的问题,而是:

oh_modules 缓存 + 软链接 + 三方模块引用

在你们合并代码后出现了冲突。

你这个报错核心是:

ENOTSUP: operation not supported on socket, copyfile

再结合:

每次删 oh_modules 才能运行

基本可以判断:

某个依赖模块被错误地软链接/嵌套引用了

尤其你截图里:

TUIKit_Harmony
uikit

两个目录下面都有:

oh_modules

这个很容易出问题。

正常情况下:

HarmonyOS 工程最好:

整个工程只有根目录一个 oh_modules

不要:

子模块再套一层 oh_modules

否则 hvigor 在:

  • copy
  • compile
  • link
  • cache

时很容易异常。

你现在这种情况一般是:

以前别人提交代码时:

把 oh_modules 也提交到 git 了

或者:

npm install / ohpm install

在子模块目录执行过。

建议直接彻底清一次。

步骤:

1、删除所有子模块里的:

oh_modules
build

包括:

TUIKit_Harmony/oh_modules
uikit/oh_modules

全部删。

2、根目录执行:

ohpm install

不要在子模块执行。

3、删除缓存

Mac:

rm -rf ~/.hvigor
rm -rf ~/.ohpm

Windows:

删:

C:\Users\用户名\.hvigor
C:\Users\用户名\.ohpm

4、重新 Sync Project

DevEco:

File -> Sync and Refresh Project

5、检查 .gitignore

确保:

oh_modules/
build/
.local/
.cache/

已经忽略。

否则团队一提交缓存文件:

别人就会炸。

还有一种可能:

你们项目用了:

软链接(ln -s)

或者:

file:
link:
workspace:

这种本地模块引用。

HarmonyOS hvigor 对某些软链接兼容并不好。

尤其 Mac 下:

copyfile ENOTSUP

特别像:

复制 socket / symlink 文件失败

一句话:

你这个本质上是合并代码后导致多个 oh_modules/缓存/软链接冲突;正确做法是删除所有子模块里的 oh_modules 和 build,只保留根目录统一依赖,然后重新 ohpm install 和 Sync Project。

在.gitignore文件中把这两个文件进行忽略

oh_modulesohpm 自动生成的依赖目录,本不该提交到版本库,合并后会导致本地构建时出现 “双重依赖” 或文件锁冲突。应该是合并代码时,oh_modules 被意外提交,合并到了 Git吧

而且你的项目根目录和 chat/chatui 子模块都出现了 oh_modules,说明依赖配置混乱,构建工具在复制依赖时发生了冲突,才会报 ENOTSUP: operation not supported on socket, copyfile(文件复制失败)。

解决方法:

关闭 DevEco Studio

git终端打开项目所在的终端,执行命令,删除所有构建缓存和依赖目录:

# 删除所有oh_modules(包括根目录和子模块里的)
rm -rf oh_modules
rm -rf product/phone/oh_modules
rm -rf product/phone/src/main/ETS/TUIKIL/Harmony/chat/chatui/oh_modules

# 删除构建缓存和锁文件
rm -rf build
rm -rf .hvigor
rm -rf oh-package-lock.json5
rm -rf product/phone/build
rm -rf product/phone/.hvigor
rm -rf product/phone/oh-package-lock.json5

然后修改提交git的配置文件,让oh_modules 等目录不提交,免得后续合并进来了

最后重新打开 DevEco Studio,等待项目加载完成。

  1. 点击顶部菜单栏的 Build → Clean Project,清理所有旧构建缓存。
  2. 再点击 Build → Rebuild Project,重新构建整个项目。
  3. 直接点击运行按钮,看看是否还会报错。

在我分支里面试了,我推自己远程了然后还是不管用

使用 git clean -fd 清除未跟踪的多余文件,或通过 git status 识别后手动删除。若重复出现,检查 .gitignore 是否遗漏了 entry/build/node_modules/ 等编译产物目录。

这是代码合并后构建缓存或依赖索引未正确更新的问题。解决方法:

在项目根目录执行:

hvigorw clean

或在 DevEco Studio 中点击 Build -> Clean Project,然后 Build -> Rebuild Project。这会清除所有中间产物和缓存,重新生成正确的构建索引。

如果清理后仍报错,检查 oh-package.json5 中是否通过 overridesdependencies 误引入了重复或冲突的本地包路径,删除多余条目并保存。另外,确认冲突目录下没有残留的 oh-package.json5 文件,该文件会使系统将其识别为独立模块导致冲突。直接删除出问题的目录,确保其不被任何 oh-package.json5 引用即可。

回到顶部