【问题标题】:How to use external javascript libraries in NetSuite Suite Script 2.0?如何在 NetSuite Suite Script 2.0 中使用外部 JavaScript 库?
【发布时间】:2017-02-03 07:48:44
【问题描述】:

我真的很讨厌 netsuite 套件脚本 2.0 处理日期格式的方式。因此,我想使用 Moment.js 来解析从 Web 服务调用返回的日期。如何让它在套件脚本 2.0 中工作?

正如erictgrubaugh 所说,我需要将 moment.js 库添加到 NetSuite 文件柜中,然后在调试器中使用该库。另请注意,我的脚本位于文件柜 -> SuiteScripts -> 库中

但即便如此,我还是遇到了语法问题。因为当我使用调试器时,它现在不会抛出任何错误,但我无法单步执行任何代码,并且日志语句不会打印任何内容。

/** * @NApiVersion 2.x
 * @NScriptType ScheduledScript
 */

define ([
 'N/log',
 '../Libraries/moment',
 ],

function(log, moment) {





var a = moment('2016-01-01'); 
var b = a.clone().add(1, 'week'); 
log.debug(b);

});

【问题讨论】:

    标签: netsuite suitescript


    【解决方案1】:

    一般来说,外部库只需要一个AMD-formatted 模块,你可以直接将它包含在你的代码中。如果您要使用的库与 AMD 不兼容,则需要做额外的工作。

    moment 与 AMD 兼容,因此您只需将 moment 源文件放在文件柜中的某个位置,然后通过其路径将其包含在您的依赖项中。

    require(["path/to/moment"], function (moment) {
        // use moment as usual
    });
    

    这是一个工作示例,其中我在兄弟lib 目录中有moment.min.jshttps://gitlab.com/stoicsoftware/netsuite-sku-analytics/blob/master/FileCabinet/SuiteScripts/sku-analytics/total-monthly-by-sku/sa-TotalMonthlyBySku.js

    【讨论】:

    • 其实我觉得行不通。因为即使调试器没有抛出任何错误,我也无法单步执行代码。
    • 我自己很少使用调试器,但也许会有其他人也可以添加输入。
    • 这适用于 UE 脚本。 define(['N/record', 'N/log', 'N/ui/serverWidget', './moment.min.js'], function(record,log,ui,moment){} 我会在这里回应 Eric。我发现调试器通常效率不高。
    • 奇怪的是你需要路径的.js 部分;尽管我知道 2017.1 中的 require 库发生了变化,但我从未见过这是必要的。 @bknights 你的环境更新了吗?
    • 没有它就试过了。
    【解决方案2】:

    你说:

    因为当我使用调试器时,它现在不会抛出任何错误,但我无法单步执行任何代码,并且日志语句不会打印任何内容。

    但是从文档来看:

    注意如果您需要在 NetSuite 调试器 中临时调试您的代码,您必须使用 require() 函数。 NetSuite 调试器 无法单步执行define() 函数。

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多