从 MarkLogic 控制台导入 JS 模块

Importing JS modules from MarkLogic console

(请原谅我的术语错误,因为我是 JS 和 MarkLogic 的新手,但如果我哪里错了请纠正我。)

我想使用 MarkLogic qconsole(服务器端 JS)从外部模块 bignumber.js 导入一个 BigNumber 对象(或者它是一个 class,构造..)。

这是他们 github 推荐的方法,但它适用于 Node.js 而不是 SSJS。 https://github.com/MikeMcl/bignumber.js/

const BigNumber = require('bignumber.js');
import BigNumber from "bignumber.js";
import { BigNumber } from "bignumber.js";

到目前为止,我的设置如下所示:

我已经打开 HTTP 服务器

我将 bignumber.js 文档插入到 my-db-modules 中,其中包含以下几行:

declareUpdate();
xdmp.documentLoad('path/bignumber.js', {'uri': 'bignumber.js'});

我也插入了bignumber.mjs文件。

当我尝试从 .js 文件导入 BigNumber 时,我得到 'Module bignumber.js not found' 如果我尝试从 .mjs 文件导入它,我会得到 'Document is not of executable mimetype. URI: bignumber.mjs'

我找到了关于如何使用模块 db 的部分:https://docs.marklogic.com/guide/admin/databases#id_38484

但我不知道我是否做对了,因为我尝试将我的 HTTP 服务器的根更改为 http://marklogic.com/ 但没有结果。

正如评论中 MadsHansen 指出的那样 - 文档的名称中应插入前导斜杠。

我只想澄清下一部分:

  • 使用 require 导入适用于 .js 个文件
const BigNumber = require('/bignumber.js');
  • 这种导入方式适用于 .mjs 个文件
import BigNumber from "/bignumber.mjs";
import { BigNumber } from "/bignumber.mjs";

.js.mjs 文件都应该插入到模块数据库中,并在主数据库中使用。

我用这些行加载了文件:

xdmp.documentLoad('path/bignumber.js', {'uri': '/bignumber.js'});
xdmp.documentLoad('path/bignumber.mjs', {'uri': '/bignumber.mjs'});