Javascript 在MarkLogic模块中使用节点模块

Javascript 在MarkLogic模块中使用节点模块,javascript,marklogic,marklogic-9,ml-gradle,Javascript,Marklogic,Marklogic 9,Ml Gradle,我运行的Marklogic服务器带有一个公开的RESTAPI。我用自己的资源扩展了API。这些端点只是文档中指定的.sjs文件。是否可以在这些sjs文件中使用常规节点模块(通过npm安装) 我正在使用ml gradle部署服务器和端点。我不知道该在哪个目录下安装npm模块 我尝试进行npm安装,然后使用相对路径导入它 const lodash = require('../node_modules/lodash') 但是,我的sjs文件永远找不到这些模块。我假设我给出的导入路径不正确。Mark

我运行的Marklogic服务器带有一个公开的RESTAPI。我用自己的资源扩展了API。这些端点只是文档中指定的.sjs文件。是否可以在这些sjs文件中使用常规节点模块(通过npm安装)

我正在使用ml gradle部署服务器和端点。我不知道该在哪个目录下安装npm模块

我尝试进行npm安装,然后使用相对路径导入它

const lodash = require('../node_modules/lodash') 

但是,我的sjs文件永远找不到这些模块。我假设我给出的导入路径不正确。

MarkLogic server不使用Node.js,因此不知道包何时安装到Node.js实例中

相反,库的JavaScript文件必须安装在RESTAPI实例的模块数据库中。见:

关于npm包的一个一般警告…

MarkLogic中的Node.js和SJS(服务器端JavaScript)是完全不同的环境:

  • Node.js是单线程和事件驱动的,提供了在Node.js进程的生命周期内持久的全局状态

  • SJS是并发的和事务性的,为每个主模块提供一个独立的状态,该状态在该主模块的单个同步调用的生命周期内是持久的

因此,事件包在SJS环境中没有用处

但是,JavaScript库(包括lodash和许多解析器)可以在SJS环境中使用,这些库提供的函数可以在不发生事件的情况下运行到完成

另见:

在这个特殊的问题上,一些人认为lodash已经被SJS支持的ES6所取代

希望有帮助