如何在ServiceNow中使用Moment.js?

时间:2019-03-13 14:59:36

标签: momentjs servicenow

我们的团队正在尝试在我们的实例中使用Moment.js,但似乎无法使其正常工作。这是我们有几个问题:

  1. 我们注意到,开箱即用的依赖项称为moment-timezone-with-data-2010-2020-v0.5,这与moment.js相同吗?如果是这样,这是否意味着我们不需要引入moment.js作为新的依赖项?
  2. 我们尝试使用上述ootb依赖项,并尝试将moment.js引入小部件中使用,并且不断收到控制台错误,指出矩未定义。有人可以提供一些说明,说明如何正确使这些依赖关系之一起作用吗?
  3. 如果我们想在平台业务规则上使用moment.js,我们该怎么做才能做到这一点?您可以通过业务规则访问依赖项吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

不幸的是,您不能在ServiceNow的服务器端使用momentjs。这是Rhino(SNOW使用的JavaScript解释器)的momentjs的安装说明:https://gist.github.com/UnquietCode/5614860

如您所见,您将需要编写SNOW不允许您执行的新Java类。

另一方面,您可以在客户端上使用它,只需复制粘贴“浏览器”实现并将其作为全局ui脚本包括在内:https://momentjs.com/docs/#/use-it/browser/

答案 1 :(得分:0)

将Moment.js的代码加载到脚本include中,然后可以像调用其他任何脚本include一样调用它。

如果要使用时区功能,则需要重写时区javascript中的调用以使用上述脚本include。

答案 2 :(得分:0)

这是我能够做到的方式:

创建一个名为“ moment”(必须称为此名称)的脚本包含,将范围设置为全局(或项目的适当范围),并使其成为可调用的客户端

MomentJS 2.22.1中的代码粘贴到脚本主体中。

要验证您是否可以访问脚本包含,请打开背景脚本并运行以下测试代码:

var calendar = moment().add(1, 'days').calendar();
gs.log("calendar test: " + calendar);

var dayCount = moment().diff('1809-02-12', 'days');
gs.log('Abraham Lincoln was born ' + dayCount + " days ago!");

moment-timezone-with-data-2010-2020-v0.5 上回答您的问题:不,这不尽相同;这是指向Moment Timezone的链接,该链接是同一组织的不同库。

截至本文发布时,2.22.1是ServiceNow中运行的最新版本。 MomentJS有较新的版本,但是对于SN解释器来说太新了。

您还可以使用2.22.1版创建UI脚本。