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

添加AWS库后Temporalio出现ActivityHeartbeat命名重复错误求助

解决Temporalio与AWS相关库冲突导致的duplicate name 'ActivityHeartbeat' in Namespace coresdk错误

问题描述

我们项目使用Temporalio库,添加AWS相关库后,启动服务器或运行单元测试时触发错误:duplicate name 'ActivityHeartbeat' in Namespace coresdk。
曾怀疑是版本或库冲突,尝试统一所有库版本后问题仍未解决;运行使用Temporalio的特定测试时也会出现相同错误,目前不清楚问题原因及解决办法。

启动服务器时的错误栈

node_modules/protobufjs/src/namespace.js:239
                throw Error("duplicate name '" + object.name + "' in " + this);
                      ^
Error: duplicate name 'ActivityHeartbeat' in Namespace coresdk
    at Namespace.add (node_modules/protobufjs/src/namespace.js:239:23)
    at Root.add (node_modules/protobufjs/src/namespace.js:232:28)
    at Root.addJSON (node_modules/protobufjs/src/namespace.js:172:16)
    at Object.<anonymous> (node_modules/@temporalio/proto/protos/json-module.js:7:2)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Function.Module._load (node:internal/modules/cjs/loader:960:12)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at Module.Hook.Module.require (api/node_modules/dd-trace/packages/dd-trace/src/ritm.js:85:33)

运行测试时的错误栈

duplicate name 'ActivityHeartbeat' in Namespace coresdk

      3 | const sdk = getTracerSdk();
      4 |
    > 5 | import {
        | ^
      6 |     Client,
      7 |     Connection,
      8 |     DataConverter,

      at Namespace.add (../node_modules/protobufjs/src/namespace.js:239:23)
      at Root.add (../node_modules/protobufjs/src/namespace.js:232:28)
      at Root.addJSON (../node_modules/protobufjs/src/namespace.js:172:16)
      at Object.<anonymous> (../node_modules/@temporalio/proto/protos/json-module.js:7:2)
      at Object.<anonymous> (../node_modules/@temporalio/proto/protos/root.js:8:23)
      at Object.<anonymous> (../node_modules/@temporalio/proto/protos/index.js:1:120)
      at Object.<anonymous> (../node_modules/@temporalio/client/src/types.ts:3:1)
      at Object.<anonymous> (../node_modules/@temporalio/client/src/connection.ts:11:1)
      at Object.<anonymous> (../node_modules/@temporalio/client/src/base-client.ts:6:1)
      at Object.<anonymous> (../node_modules/@temporalio/client/src/async-completion-client.ts:10:1)
      at Object.<anonymous> (../node_modules/@temporalio/client/src/index.ts:30:1)

可能的解决思路

  • 检查依赖冲突:执行npm ls protobufjs查看项目中所有依赖的protobufjs版本,确认是否存在多版本共存。部分AWS库可能内置了与Temporalio冲突的proto定义或protobufjs版本,导致加载时重复注册ActivityHeartbeat。
  • 强制统一protobufjs版本:在package.json中使用overrides字段(npm)或resolutions字段(yarn),强制所有依赖使用Temporalio指定的protobufjs版本。比如:
    "overrides": {
      "protobufjs": "~7.2.5"
    }
    
    (版本号以@temporalio/proto的package.json中依赖的protobufjs版本为准)
  • 排查模块重复加载:启动服务或测试时添加--trace-module-resolution参数,追踪@temporalio/proto和AWS相关库的proto文件加载路径,确认是否有重复加载相同定义的情况。
  • 调整导入顺序:测试文件中先导入了追踪SDK,再导入Temporalio模块,可能导致依赖加载顺序异常。尝试将Temporalio的导入语句移到追踪SDK之前。
  • 清理依赖缓存:删除node_modules、package-lock.json(或yarn.lock),重新执行npm install(或yarn install),排除缓存导致的依赖异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:44:53