HarmonyOS鸿蒙Next中hvigorw -v 执行报错异常

HarmonyOS鸿蒙Next中hvigorw -v 执行报错异常 v22.18.0

PS F:\harmonyOS_learn\test> hvigorw -v

file:///F:/harmonyDev/DevEco%20Studio/tools/hvigor/bin/hvigorw.js:3

var e, t = require(“fs”), r = require(“path”), n = require(“process”), o = require(“crypto”), i = require(“child_process”), a = require(“os”), u = require("constants

“), s = require(“stream”), l = require(“util”), c = require(“assert”), f = require(“tty”), d = require(“url”), p = require(“zlib”), v = require(“net”), h = require(”

fs/promises"), g = “undefined” != typeof globalThis ? globalThis : “undefined” != typeof window ? window : “undefined” != typeof global ? global : “undefined” != typ

eof self ? self : {}, y = {}, m = {}, E = {};

            ^

ReferenceError: require is not defined in ES module scope, you can use import instead

This file is being treated as an ES module because it has a ‘.js’ file extension and ‘F:\package.json’ contains “type”: “module”. To treat it as a CommonJS script, r

ename it to use the ‘.cjs’ file extension.

cke_418.png


更多关于HarmonyOS鸿蒙Next中hvigorw -v 执行报错异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

【解决方案】

工程应用代码包含hvigor-config.json5、build-profile.json5等构建配置文件,用于配置构建环境,定制构建流程,包括构建工具版本和依赖、多目标构建配置等,应用编译构建、运行报错可以通过日志与故障分析定位问题原因。

根据日志信息:This file is being treated as an ES module because it has a ‘.js’ file extension and ‘F:\package.json’ contains “type”: “module”. To treat it as a CommonJS script, rename it to use the ‘.cjs’ file extension.可以获知是package.json文件报错。进一步分析,原因为此package.json文件是多余的错误文件,导致项目启动引用了错误文件。电脑F盘有多余的一个package.json文件,此文件为错误文件,导致项目运行报错,删除F盘多余的package.json文件,项目可以正常运行成功。

更多关于HarmonyOS鸿蒙Next中hvigorw -v 执行报错异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以了,感谢

在HarmonyOS Next中执行hvigorw -v报错通常与hvigor版本或环境配置有关。检查项目根目录下的hvigor文件夹和hvigorw脚本文件是否完整。确认HarmonyOS SDK路径配置正确,环境变量HARMONYOS_SDK_HOME已设置。验证Node.js版本是否符合鸿蒙开发要求。若问题持续,尝试删除项目中的.hvigor缓存目录后重新运行命令。

从错误信息来看,这是一个典型的 ES 模块与 CommonJS 模块的兼容性问题。错误提示明确指出 require 在 ES 模块作用域中未定义,因为项目中的 package.json 设置了 "type": "module",导致 Node.js 将所有 .js 文件视为 ES 模块处理。

解决方案:

  1. 检查项目根目录的 package.json 文件,确认是否存在 "type": "module" 字段。如果存在,可以尝试以下两种方法:

    • 方法一:删除或注释掉该字段,使项目恢复为 CommonJS 模式。
    • 方法二:将 hvigorw.js 文件扩展名改为 .cjs(需修改 hvigor 工具内部配置,不推荐手动操作)。
  2. 更新 DevEco Studio 和 HarmonyOS SDK:确保使用的是最新版本,避免已知的兼容性问题。

  3. 清理缓存并重新构建

    hvigorw clean
    hvigorw assemble
    
  4. 检查 Node.js 版本兼容性:HarmonyOS Next 推荐使用 LTS 版本的 Node.js(如 v18.x),过高版本可能存在兼容性问题。

建议优先检查 package.json 配置,这是最直接的解决路径。

回到顶部