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

TypeScript报错:类型'{}'不存在'keys'属性,求解决方案

问题分析与解决方案

针对你在target为ES6、module为CommonJS的TypeScript中间件中遇到的错误,结合代码和配置场景,以下是具体排查和解决方法:

1. fetch 环境兼容与类型问题

Node.js环境(CommonJS模块通常用于Node.js)未内置fetch API,需手动处理:

  • 安装依赖及类型声明:
    npm install node-fetch
    npm install -D @types/node-fetch
    
  • 在代码中导入fetch:
    import fetch from 'node-fetch';
    
    若使用Node.js 18+,可启用内置fetch,需在tsconfig.json中设置"lib": ["ES2022", "DOM"]。

2. jwkToPem 类型缺失

使用jwk-to-pem包时,需安装对应类型声明文件,否则TypeScript会报错:

  • 安装类型依赖:
    npm install -D @types/jwk-to-pem
    
  • 确保正确导入:
    import jwkToPem from 'jwk-to-pem';
    

3. await 未在async函数中使用

代码中使用了await fetch(URL),但外层函数未标记为async,这会触发语法错误。需将包含这段代码的函数声明为async:

async function fetchJWKs() {
  try {
    const response = await fetch(URL);
    // ... 你的其余代码逻辑
  } catch (error) {
    // ... 错误处理代码
  }
}

4. 全局pems的类型安全检查

虽然你定义了let pems: { [key: string]: string } = {},需确保key_id是字符串类型,避免类型不匹配:

const key_id = keys[i].kid;
// 增加类型校验,防止非字符串key导致的错误
if (typeof key_id === 'string') {
  pems[key_id] = pem;
}

5. 修正TypeScript配置

检查tsconfig.json关键配置,确保符合target和module要求:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "lib": ["ES6", "DOM"],
    "strict": true,
    "esModuleInterop": true
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:37:46