You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Homey Script能否使用外部npm包?require/import是否支持?

Homey Script 外部npm包与模块引入问题解答

1. 是否支持require/import语法?

Homey Script的运行环境并非完整Node.js环境,不支持Node.js原生的require()或ES模块的import语法,这就是你触发ReferenceError: require is not defined错误的直接原因。

2. 是否支持使用外部npm包?

Homey Script本身无法直接安装和引入外部npm包,但有两种可行的替代方案:

  • 方案一:内联包的核心代码
    找到azure-log-analytics-data-collector-client包编译后的核心代码(一般在包的dist或lib目录下),把完整代码复制到你的Homey Script开头,注意要删掉代码里所有的require或import语句。如果包还有其他依赖,需要把依赖的核心代码也一并内联进来,之后就能直接调用DataCollectorClient类。
  • 方案二:通过自定义Homey App封装调用
    如果包的依赖太多,内联代码太繁琐,可以开发一个自定义Homey App,在App里正常安装使用这个npm包,然后通过Homey的API或者自定义动作/触发器,让Homey Script调用App提供的功能。

3. 内联代码示例

假设你已经提取到了包的核心代码,Homey Script的结构大概是这样:

// 粘贴azure-log-analytics-data-collector-client的核心代码(移除所有require语句)
class DataCollectorClient {
  constructor(options) {
    // 包的原始实现逻辑
    this.workspaceId = options.workspaceId;
    this.sharedKey = options.sharedKey;
    // ...其他初始化代码
  }

  async sendLogEntry(logEntry, logType) {
    // 包的日志发送逻辑
    // ...
  }
}

// 你的业务代码
const client = new DataCollectorClient({
  workspaceId: '你的Azure工作区ID',
  sharedKey: '你的共享密钥'
});

// 调用日志发送方法
client.sendLogEntry('测试日志内容', 'HomeyLogs')
  .then(() => console.log('日志发送成功'))
  .catch(err => console.error('发送失败:', err));

内容的提问来源于stack exchange,提问作者michel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:25:26