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

Domino AppDev Pack报错TypeError: database.useAgent is not a function求助

解决database.useAgent is not a function错误的排查步骤

我来帮你搞定这个问题,这个错误大概率是版本兼容性或者配置遗漏导致的,咱们一步步来排查:

1. 先确认你的Domino Node.js SDK版本

useAgent这个方法是Domino Node.js SDK(也就是@domino/domino-db包)后来新增的Agent操作API,如果你用的是旧版本,就会出现这个错误。

  • 先检查当前安装的版本:在项目根目录运行
    npm list @domino/domino-db
    
  • 如果版本低于v1.9.0(Agent API首次引入的版本),赶紧升级到最新稳定版:
    npm install @domino/domino-db@latest
    

2. 验证Domino服务器版本和配置

Agent API需要服务器端的支持,不是所有Domino版本都能行:

  • 确保你的Domino服务器版本是12.0.1 FP1及以上,旧版本没有开放Agent的API端点。
  • 确认Domino REST API服务已经正确启用,并且在配置文件(比如domino-rest-api-config.json)中,已经开启了Agent相关的权限,同时目标数据库node-demo.nsf在API的允许列表里。

3. 检查数据库ACL和用户权限

就算SDK和服务器版本都对了,用户权限不够也会出问题:

  • 确认你的认证用户在node-demo.nsf的ACL中,拥有**"运行受限代理"或"运行无限制代理"**的权限。
  • 还要保证用户对目标AgentAppDevLastModified有运行权限(Agent的安全设置里要允许该用户运行)。

4. 调试数据库对象的有效性

有时候数据库连接可能有隐性错误,导致返回的database对象不完整:

  • 在代码里console.log("3");后面加一行调试代码:
    console.log("Database methods:", Object.keys(database));
    console.log("useAgent exists?", typeof database.useAgent === "function");
    
    如果输出显示useAgent不存在,那说明数据库对象初始化有问题,可能是文件路径写错了,或者服务器连接时的权限不足,导致没有加载Agent相关的方法。

顺便提下你代码里的小问题

原来的代码里直接把Promise对象agentRunExample传给res.json(),客户端会收到Promise的结构而不是实际的文档数据。建议改成async/await的写法,更清晰也不容易出错,调整后的代码大概是这样:

app.get("/lastUpdated", async (req, res, next) => {
  try {
    console.log("0");
    // Initialize the Server, Database and Agent objects.
    const server = await useServer(serverConfig);
    console.log("2");
    const database = await server.useDatabase({ filePath: 'develop/node-demo.nsf' });
    console.log("3");
    // 调试用:检查useAgent是否存在
    console.log("useAgent exists?", typeof database.useAgent === "function");
    
    const agent = await database.useAgent({ name: 'AppDevLastModified' });
    console.log("4");
    
    // Create the context document with data to pass to the agent.
    const contextUnid = await database.createDocument({
      document: { param1: 'aa', param2: 'bb', },
    });
    console.log("5");
    
    // Run the agent with context document
    await agent.run({
      // selection: { search: { query: "Form = 'VA'" } },
      context: { unid: contextUnid },
    });
    console.log("6");
    
    // Get the updated context document
    const result = await database.bulkReadDocumentsByUnid({
      unids: [contextUnid],
      itemNames: ['found_docs'],
    });
    console.log("7");
    
    const [doc] = result.documents;
    res.json(doc);
  } catch(error) {
    console.error("Error running agent:", error);
    res.status(500).json({ error: error.message });
  }
});

按上面的步骤排查,应该能解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:42:32