HarmonyOS鸿蒙Next中小艺接入openclaw失败
HarmonyOS鸿蒙Next中小艺接入openclaw失败 执行openclaw plugins install @ynhcj/xiaoyi@latest时报错:
xiaoyi failed to load from /root/.openclaw/npm/node_modules/@ynhcj/xiaoyi/xiaoyi.js: ReferenceError: module is not defined in ES module scope
This file is being treated as an ES module because it has a ‘.js’ file extension and ‘/root/.openclaw/npm/node_modules/@ynhcj/xiaoyi/package.json’ contains “type”: “module”. To treat it as a CommonJS script, rename it to use the ‘.cjs’ file extension.
更多关于HarmonyOS鸿蒙Next中小艺接入openclaw失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
您好,根据报错提示插件清单声明了xiaoyi,但没有包含channelConfigs元数据;请在openclaw.plugin.json添加channelConfigs
更多关于HarmonyOS鸿蒙Next中小艺接入openclaw失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
方案一:临时修复(推荐)
根据错误提示,最直接的解决方案是重命名文件:
# 1. 首先找到插件安装目录
cd /root/.openclaw/npm/node_modules/@ynhcj/xiaoyi
# 2. 重命名主文件
mv xiaoyi.js xiaoyi.cjs
# 3. 修改package.json中的入口文件
# 将 "main": "xiaoyi.js" 改为 "main": "xiaoyi.cjs"
sed -i 's/"main": "xiaoyi.js"/"main": "xiaoyi.cjs"/g' package.json
# 4. 重新加载OpenClaw
openclaw plugins reload
方案二:修改package.json配置
# 1. 进入插件目录
cd /root/.openclaw/npm/node_modules/@ynhcj/xiaoyi
# 2. 移除或修改type字段
# 方法A:完全移除type字段
sed -i '/"type": "module"/d' package.json
# 方法B:或改为CommonJS
sed -i 's/"type": "module"/"type": "commonjs"/g' package.json
# 3. 重启OpenClaw服务
openclaw restart
方案三:联系插件开发者
这个错误表明插件代码没有正确处理ES模块和CommonJS的兼容性。建议:
- 向插件开发者报告问题:在GitHub或相关社区提交issue
- 临时使用旧版本:如果可用,尝试安装较旧版本
openclaw plugins install @ynhcj/xiaoyi@1.0.0 # 替换为可用版本
预防措施
- 检查Node.js版本:确保使用Node.js v22+(OpenClaw要求)
node -v - 安装前检查插件兼容性:查看插件文档是否支持ES模块
- 使用虚拟环境:在测试环境中先验证插件兼容性
让openclaw解决了一下这个问题后,频道里面可以显示小艺了,但并没有运行。

先用 openclaw plugins list 看看xiaoyi装成功了吗,看看是启用状态吗?
贴出来你的配置,~/.openclaw/openclaw.json,看看小艺的配置对吗。
是启用状态。
"plugins": {
"entries": {
"xiaoyi": {
"enabled": true
}
}
},
"channels": {
"xiaoyi": {
"enabled": true,
"ak": "***",
"sk": "***",
"agentId": "agentb910f6870e3c4f80a163001513a91955"
}
}
重启看下
openclaw gateway restart
有问题,贴下log
openclaw logs --follow
根据报错提示及 Node.js 的模块规范,你有以下两种修复路径:
方案一:修改文件后缀(推荐,最快见效)
这是报错信息中直接建议的方法,也是最不容易破坏现有环境配置的方式。
- 找到报错的文件路径:
/root/.openclaw/npm/node_modules/@ynhcj/xiaoyi/。 - 将文件
xiaoyi.js重命名为xiaoyi.cjs。 - 原理:
.cjs后缀会强制 Node.js 将该文件视为 CommonJS 模块,从而识别module.exports,报错即可消失。
方案二:修改代码语法(如果你熟悉 ES6)
如果你希望保持 .js 后缀并适配现代 ES 模块标准,需要修改代码语法。
- 打开
xiaoyi.js文件。 - 将
module.exports = ...替换为export default ...。 - 将文件内的
const xxx = require('...')替换为import xxx from '...'。 - 注意:这种方法风险稍高,如果代码内部还有复杂的 CommonJS 逻辑,可能需要大量修改。
小艺接入openclaw失败,通常因以下原因:openclaw SDK未适配HarmonyOS NEXT的API(如ArkTS接口变更)、权限声明缺失(如ohos.permission.INTERNET及音频相关权限),或分布式组网未正确建立。请确认SDK版本及调用参数与NEXT规范一致。
该错误的原因是插件包 @ynhcj/xiaoyi 的 package.json 中声明了 "type": "module",导致 Node.js 将 .js 文件按 ES 模块解析,但 xiaoyi.js 内部使用了 CommonJS 的 module 对象,在 ES 模块作用域中该对象未定义。
解决方法(任选其一):
- 将
/root/.openclaw/npm/node_modules/@ynhcj/xiaoyi/xiaoyi.js重命名为xiaoyi.cjs,.cjs扩展名会强制 Node.js 以 CommonJS 方式加载。 - 打开
/root/.openclaw/npm/node_modules/@ynhcj/xiaoyi/package.json,删除或注释掉"type": "module"字段,保存后重新执行安装。
若不希望直接修改 node_modules,可将修复后的文件打包或联系插件作者适配。

