如何在 MarkLogic 10 中的资源扩展中导入 JavaScript 模块

Fan*_* Li 2 javascript marklogic

MarkLogic v10 引入了对原生 JavaScript 模块(ECMAScript 模块)的支持。

https://docs.marklogic.com/guide/jsref/modules

但是我不确定如何在资源扩展中导入这些模块。例如:

'use strict';

import * as jsearch = from '/MarkLogic/jsearch.mjs';

function get(context, params) {
  // omitted
};

exports.GET = get;
Run Code Online (Sandbox Code Playgroud)

会导致以下错误:

JS-JAVASCRIPT: import * as jsearch = from '/MarkLogic/jsearch.mjs'; -- 运行 JavaScript 请求时出错:SyntaxError: Unexpected token *;

同样,导入自定义模块如import { foo } from '/bar.mjs'导致类似的错误:Unexpected token { .

谢谢!

Mad*_*sen 6

你有一个小的语法错误。=从导入语句中删除:

import * as jsearch from '/MarkLogic/jsearch.mjs';
Run Code Online (Sandbox Code Playgroud)

但是,看起来您正在构建自定义 REST 扩展。自定义 REST 扩展不能使用 mjs 模块。由于资源服务扩展是由 REST API 为当前请求动态导入的,因此 REST API 无法获得静态缓存的 JavaScript *.mjs 模块库的好处。

您可以考虑通过数据服务公开功能,它可以导入 mjs 模块。查看在 Node.js 中创建数据服务和开发人员操作以获取更多信息。