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

如何解决TypeScript中DocuSign SDK的'EnvelopeDefinition不存在'错误?

TypeScript中使用DocuSign eSignature SDK的类型错误排查与解决

错误信息

在TypeScript项目中使用DocuSign eSignature SDK时,遇到以下类型错误:

Property 'EnvelopeDefinition' does not exist on type 'typeof import("c:/Users/USER/Desktop/docusign/node_modules/@types/docusign-esign/index")'.ts(2339)
Property 'Tabs' does not exist on type 'typeof import("c:/Users/USER/Desktop/docusign/node_modules/@types/docusign-esign/index")'.ts(2339)

出错代码

错误出现在以下TypeScript函数中:

function makeEnvelope(name: string, email: string, company: string): docusign.EnvelopeDefinition {
  const env = new docusign.EnvelopeDefinition(); // Error here
  env.templateId = process.env.TEMPLATE_ID!;

  const text = new docusign.Text();
  text.tabLabel = "company_name";
  text.value = company;

  const tabs = new docusign.Tabs(); // Error here
  tabs.textTabs = [text];

  const signer1 = new docusign.TemplateRole();
  signer1.email = email;
  signer1.name = name;
  signer1.tabs = tabs;
  signer1.clientUserId = process.env.CLIENT_USER_ID!;
  signer1.roleName = 'Applicant';

  env.templateRoles = [signer1];
  env.status = "sent";
  return env;
}

已尝试的操作

  • 通过npm install docusign-esign确保DocuSign eSignature SDK安装正确
  • 检查@types/docusign-esign包已安装且为最新版本
  • 验证已正确导入模块:import * as docusign from 'docusign-esign';

错误原因

DocuSign eSignature SDK的TypeScript类型定义中,EnvelopeDefinition、Tabs这类实体类并非直接挂载在顶层导出对象上,而是嵌套在docusign命名空间下的models属性中,旧的直接访问方式不符合当前类型定义的结构。

解决方法

方法1:通过models属性访问类

修改代码中创建实例的路径,从docusign.models下获取对应类:

function makeEnvelope(name: string, email: string, company: string): docusign.EnvelopeDefinition {
  const env = new docusign.models.EnvelopeDefinition(); // 修正此处
  env.templateId = process.env.TEMPLATE_ID!;

  const text = new docusign.models.Text(); // 修正此处
  text.tabLabel = "company_name";
  text.value = company;

  const tabs = new docusign.models.Tabs(); // 修正此处
  tabs.textTabs = [text];

  const signer1 = new docusign.models.TemplateRole(); // 修正此处
  signer1.email = email;
  signer1.name = name;
  signer1.tabs = tabs;
  signer1.clientUserId = process.env.CLIENT_USER_ID!;
  signer1.roleName = 'Applicant';

  env.templateRoles = [signer1];
  env.status = "sent";
  return env;
}

方法2:解构导入所需类

如果不想重复书写models,可以直接解构导入需要的类:

import { EnvelopeDefinition, Text, Tabs, TemplateRole } from 'docusign-esign';

function makeEnvelope(name: string, email: string, company: string): EnvelopeDefinition {
  const env = new EnvelopeDefinition();
  env.templateId = process.env.TEMPLATE_ID!;

  const text = new Text();
  text.tabLabel = "company_name";
  text.value = company;

  const tabs = new Tabs();
  tabs.textTabs = [text];

  const signer1 = new TemplateRole();
  signer1.email = email;
  signer1.name = name;
  signer1.tabs = tabs;
  signer1.clientUserId = process.env.CLIENT_USER_ID!;
  signer1.roleName = 'Applicant';

  env.templateRoles = [signer1];
  env.status = "sent";
  return env;
}

额外验证步骤

若修改后仍有问题,可执行以下操作确保依赖正常:

  1. 删除node_modules文件夹和package-lock.json(或yarn.lock)
  2. 重新执行npm install
  3. 重启TypeScript语言服务(VS Code中可按Ctrl+Shift+P,选择"TypeScript: Restart TS Server")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:13:14