【问题标题】:Marklogic error taken from sample documents从示例文档中获取的 Marklogic 错误
【发布时间】:2020-09-17 18:03:55
【问题描述】:
'use strict'; declareUpdate();
 const es = require('/MarkLogic/entity-services/entity-services.xqy');
 const person = require('/es-gs/person-1.0.0-conv.xqy');
for (const source of fn.collection('raw')) {
  let instance = person.extractInstancePerson(source);
  let uri = '/es-gs/env/' + instance.id + '.xml';
  xdmp.documentInsert(
    uri, person.instanceToEnvelope(instance, "xml"),
    {collections: ['person-envelopes']}
  );
}

我从 marklogic 网页中获取了以下代码 link to site

我收到以下错误。我正在一步一步地按照指示进行任何想法

[javascript] XDMP-MODNOTFOUND: const person = require('/es-gs/person-1.0.0-conv.xqy');
 -- Module /es-gs/person-1.0.0-conv.xqy not found
Stack Trace
 At line 4 column 15:

我有 /es-gs/person-1.0.0-conv.xqy 它存在

Site here

【问题讨论】:

  • 不确定它是否是代码示例中的 typeo,或者您真正运行的是什么,但 entity-services.xqy 需要一个破折号,而不是空格,分隔:`/MarkLogic/entity-services/entity services .xqy'
  • 抱歉有一个破折号我会编辑和更正
  • 我只是将代码复制并粘贴到 MarkLogic 大学 VM 的 Qconsole 之一中

标签: javascript json marklogic


【解决方案1】:

deployed the converter module 时是否有可能不小心将转换器模块加载到内容数据库中,而不是模块数据库中?

与任何应用程序代码一样,转换器模块必须先部署到 MarkLogic,然后才能使用它。最佳做法是将其安装在应用服务器的模块数据库中。我们的示例在端口 8000 上使用预定义的 App Server,它被配置为使用 Modules 数据库。

  1. 如果您尚未打开 Query Console,请在浏览器中打开它。
  2. 通过单击查询编辑器上的 + 按钮将新查询添加到工作区。
  3. 在查询类型下拉列表中选择 XQuery。
  4. 从数据库下拉列表中选择模块数据库。
  5. 将以下代码复制并粘贴到新查询中。此代码将实例转换器模块保存到数据库中。

实际上,我只是犯了这个错误,并在尝试重现您的问题时跳过了第 4 步!一旦我将它加载到我的 Modules 数据库中,require 语句就可以找到并加载该模块而不会出错。

【讨论】:

  • 这个很好的指导的脚注——如果执行模块的用户没有读取模块的权限,它也被报告为不存在。
  • 是的,你是对的。我将转换器模块加载到内容数据库中。
  • 我想我听不懂
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
相关资源
最近更新 更多