NetSuite脚本报错MODULE_DOES_NOT_EXIST 找不到lodash.min.js模块
脚本评估失败:
{"name":"MODULE_DOES_NOT_EXIST","message":"模块不存在:/lodash.min.js","stack":[]}
问题原因
- 自定义模块路径声明不符合NetSuite 2.0 AMD加载规则:NetSuite 2.0加载自定义脚本模块时,默认根路径就是SuiteScripts文件夹,依赖里写
SuiteScripts/lodash.min会被解析为SuiteScripts/SuiteScripts/lodash.min.js,和实际文件存放路径不匹配,直接触发模块找不到的报错。 - 上传的lodash文件未做NetSuite环境适配:原生下载的lodash压缩包默认的UMD导出逻辑在NetSuite的定制AMD环境中存在兼容问题,就算路径写对,也可能无法被正确识别为可加载模块。
- 代码存在基础语法问题:原脚本中所有字符串包裹用的都是中文全角单引号,不符合JS语法规范,会额外引发路径解析、代码执行异常。
- 漏部署/权限不足:如果是通过SDF或者手动上传部署,有可能漏传了lodash.min.js文件,或者运行脚本的角色没有该文件的访问权限,也会报模块不存在。
修复方案
- 修正依赖路径
确认lodash.min.js的实际存放位置:如果文件直接放在SuiteScripts根目录,就把依赖数组里的SuiteScripts/lodash.min改为./lodash.min;如果存放在SuiteScripts下的lib等子文件夹,就对应改为./lib/lodash.min这类相对路径,禁止在自定义依赖路径前加SuiteScripts前缀。 - 适配lodash的AMD导出
打开本地的lodash.min.js文件,在全量代码外层包装一层NetSuite可识别的define声明,示例结构如下:
修改完成后重新上传覆盖NetSuite中原有lodash文件,上传时确保文件未被设置为受限访问,执行脚本的角色拥有该文件的查看权限。define(function() { // 此处粘贴原生lodash.min.js的全部源码 return _.noConflict(); }); - 修正语法错误
把脚本里所有中文全角单引号‘’全部替换为英文半角单引号'',避免基础语法报错。 - 核对部署完整性
检查脚本部署包内容,确认lodash.min.js、模板文件photomanager.html都已经成功上传到对应路径,没有漏传。
内容的提问来源于stack exchange,提问作者noob4win
相关产品推荐
相关产品推荐

