You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决FLP中"String as JavaScript"错误?(异步模块加载)

解答

一、异步模块加载与CSP的关联

启用异步模块加载后,Launchpad会切换为ES模块(ES Modules)机制加载前端资源,这一模式直接触发SAP强制执行的严格CSP规则:

  • ES模块的安全设计天然禁止通过字符串求值(如eval()、new Function())执行代码,因此SAP的CSP规则中移除了unsafe-eval权限——这个权限原本允许部分非规范的字符串代码执行。
  • 未启用异步加载时,部分依赖unsafe-eval的代码可能绕过检查运行,但异步模式下浏览器会严格执行CSP规则,直接拦截所有依赖字符串求值的代码,从而出现上述报错。

简言之:异步模块加载是触发严格CSP规则的开关,CSP规则的收紧直接限制了依赖unsafe-eval的代码运行。

二、SAPUI5代码调整方案

要符合SAP的CSP规则,核心是彻底移除所有依赖unsafe-eval的代码逻辑,具体调整点如下:

  • 禁用动态代码执行API:删除所有eval()、new Function()、setTimeout("字符串代码")、setInterval("字符串代码")这类写法。例如将setTimeout("myFunc()", 1000)改为setTimeout(myFunc, 1000)。
  • 规范SAPUI5 API使用:
    • 避免使用jQuery.globalEval()这类隐含执行字符串的API,改用sap.ui.define/sap.ui.require模块导入或直接函数调用。
    • 检查自定义控件、渲染器或扩展中的动态代码逻辑,替换为静态代码或SAPUI5提供的安全替代API。
  • 采用模块化加载:确保所有SAPUI5模块、第三方库都通过官方模块化机制加载,禁止通过动态创建<script>标签、字符串拼接路径等方式加载资源。
  • 排查第三方依赖:确认引入的第三方库是否兼容CSP规范,替换掉依赖unsafe-eval的版本,或改用无此类依赖的替代库。
  • 移除javascript:伪协议:将所有通过javascript:触发的交互逻辑,替换为SAPUI5标准事件绑定方式(如attachPress、attachChange等)。

内容的提问来源于stack exchange,提问作者Boghyon Hoffmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:50:24