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;
会导致以下错误:
JS-JAVASCRIPT: import * as jsearch = from '/MarkLogic/jsearch.mjs'; -- Error running JavaScript request: SyntaxError: Unexpected token *;
类似地,导入自定义模块,例如 import { foo } from '/bar.mjs'
会导致类似的错误:Unexpected token {
。
谢谢!
最佳答案
你有一个小的语法错误。从导入语句中删除 =
:
import * as jsearch from '/MarkLogic/jsearch.mjs';
但是,看起来您正在构建自定义 REST 扩展。自定义 REST 扩展不能使用 mjs 模块。由于资源服务扩展是由 REST API 为当前请求动态导入的,因此 REST API 无法获得静态缓存的 JavaScript *.mjs 模块库的好处。
您可以考虑通过数据服务公开功能,它可以导入 mjs 模块。查看Creating Data Services and Developer Actions在 Node.js 中获取更多信息。
关于javascript - 如何在 MarkLogic 10 的资源扩展中导入 JavaScript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60459123/