尝试将 SheetJS 导入 SuiteScript 时出错

问题描述 投票:0回答:1

text页面下载SheetJS脚本并将其放在我的Netsuite文件柜中,如下所示:

xlsx.full.min.js file in file cabinet

在我的restlet suitescript中,我尝试调用一些sheetJS函数。但是,当我调用 Restlet 时,出现此错误:

"message": "Cannot call method \"book_new\" of undefined"

有人知道我哪里可能出错吗?作为参考,我从以下位置获取了 xlsx.full.min.js 文件:

SheetJS Netsuite 页面上的文件

我的restlet的代码:

/**
*@NApiVersion 2.x
*@NScriptType Restlet
*/
define([
    './sheetJS/xlsx.full.min.js',
    ],
    function (xlsx) {
        function get(context) {
            try {
                var wb = XLSX.utils.book_new();

                var ws_name = "SheetJS";
                
                var ws_data = [
                    [ "S", "h", "e", "e", "t", "J", "S" ],
                    [  1 ,  2 ,  3 ,  4 ,  5 ]
                ];

                var ws = XLSX.utils.aoa_to_sheet(ws_data);

                XLSX.utils.book_append_sheet(wb, ws, ws_name);

                return 'Success';
            } catch (err) {
                log.audit({
                    title: 'ERROR',
                    details: JSON.stringify(err)
                });

                return err;
            }
        }
        return {
            get: get
        };
    }
); 

        
netsuite suitescript suitescript2.0 sheetjs netsuite-rest-api
1个回答
0
投票

尝试将

XLSX
的大小写更改为
xlsx
,因为这是函数的参数,并且 ECMA 脚本区分大小写(如果我知道 SuiteScript 不区分大小写,我会感到非常惊讶)。 我唯一怀疑的是错误消息说它是未定义的
XLSX.utils
,而不是
XLSX

简而言之,试试这个(我已经为你编辑过):

/**
*@NApiVersion 2.x
*@NScriptType Restlet
*/
define([
    './sheetJS/xlsx.full.min.js',
    ],
    function (xlsx) {
        function get(context) {
            try {
                var wb = xlsx.utils.book_new();

                var ws_name = "SheetJS";

                var ws_data = [
                    [ "S", "h", "e", "e", "t", "J", "S" ],
                    [  1 ,  2 ,  3 ,  4 ,  5 ]
                ];

                var ws = xlsx.utils.aoa_to_sheet(ws_data);

                xlsx.utils.book_append_sheet(wb, ws, ws_name);

                return 'Success';
            } catch (err) {
                log.audit({
                    title: 'ERROR',
                    details: JSON.stringify(err)
                });

                return err;
            }
        }
        return {
            get: get
        };
    }
);
© www.soinside.com 2019 - 2024. All rights reserved.