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

Node.js 16下CommonJS异步加载ESM包key-did-resolver报错求助

解决Node.js 16中异步加载ESM包key-did-resolver的问题

问题背景

在Node.js 16的CommonJS项目中,尝试加载ESM规范的key-did-resolver包时,使用异步import的方式触发代码崩溃,无法正常解析DID。

错误原因分析

你的代码存在三个关键问题:

  • 异步import时错误获取了default导出,但key-did-resolver的getResolver是命名导出,不是默认导出
  • 未调用getResolver()函数,直接将函数本身传给了Resolver构造函数(缺少执行括号)
  • 调用didResolve时传递了数组参数,但resolve方法需要的是字符串类型的DID值

修复方案

方案1:在CommonJS中正确异步加载

修正异步加载逻辑,正确获取命名导出并执行getResolver,同时传递正确的参数:

const { Resolver } = require('did-resolver');

// 正确封装DID解析逻辑
const didResolve = async (didKey) => {
  // 加载ESM包并获取命名导出的getResolver函数
  const { getResolver } = await import('key-did-resolver');
  // 执行getResolver获取解析器配置对象
  const keyDidResolver = getResolver();
  // 实例化Resolver并传入配置
  const didResolver = new Resolver(keyDidResolver);
  // 调用resolve方法,传入字符串类型的DID
  return didResolver.resolve(didKey);
};

// 类中的调用方法
class YourClass {
  async myresolve(didKey) {
    try {
      // 直接传递DID字符串,而非数组
      const doc = await didResolve(didKey);
      console.log(doc);
      console.log(doc.didDocument.verificationMethod);
    } catch (err) {
      console.error('Error resolving DID:', err);
    }
  }
}

方案2:转为ESM模块(更推荐)

Node.js 16完全支持ESM模块,直接将项目转为ESM可以避免异步加载的麻烦:

  1. 在项目根目录的package.json中添加:
{
  "type": "module"
}
  1. 直接使用ESM的import语法编写代码:
import { getResolver } from 'key-did-resolver';
import { Resolver } from 'did-resolver';

class YourClass {
  async myresolve(didKey) {
    try {
      const keyDidResolver = getResolver();
      const didResolver = new Resolver(keyDidResolver);
      const doc = await didResolver.resolve(didKey);
      
      console.log(doc);
      console.log(doc.didDocument.verificationMethod);
    } catch (err) {
      console.error('Error resolving DID:', err);
    }
  }
}

验证

调用myresolve方法时传入正确的DID字符串,比如:

const instance = new YourClass();
instance.myresolve('did:key:z6MktvqCyLxTsXUH1tUZncNdVeEZ7hNh7npPRbUU27GTrYb8');

此时应该能正常输出DID文档和验证方法信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:32:48