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

LWC中Eval()函数在Salesforce环境失效,LWC Playground可正常运行

LWC组件使用eval函数报错问题

我在LWC Playground中运行以下代码完全正常,但将相同代码部署到Salesforce的LWC组件中执行时,抛出了错误。

JS代码

import { LightningElement } from 'lwc';

export default class InputText extends LightningElement {

  handleCommit(event) {
    var value = event.target.value
    console.log("Value: " + value);

    let validationRule = 'A.length > 5';
    console.log("Validation Rule: " + validationRule);

    let n = validationRule.replace('A', 'value');
    console.log("N: " + n);

    let x = eval(n);
    console.log("X: " + x);

  }
}

HTML代码

<lightning-input type="text" label="Enter some text" oncommit={handleCommit}></lightning-input>

错误截图

LWC Javascript Error


问题根源

Salesforce的LWC运行在Locker Service安全沙箱中,该机制会严格禁用eval这类存在代码注入风险的动态执行函数。而LWC Playground并未启用完整的Locker Service校验,因此代码在Playground中可以正常运行,但在正式环境中会被拦截。

替代方案

放弃使用eval,改用安全的方式实现校验逻辑。针对你的场景,可以通过解析规则字符串来构建校验逻辑:

修改后的handleCommit方法:

handleCommit(event) {
  const value = event.target.value;
  console.log("Value: " + value);

  const validationRule = 'A.length > 5';
  console.log("Validation Rule: " + validationRule);

  // 拆分规则为变量、操作符、阈值
  const [targetExpr, operator, threshold] = validationRule.split(' ');
  // 替换变量占位符并解析属性
  const resolvedValue = targetExpr.replace('A', 'value').split('.').reduce((ctx, key) => ctx?.[key], { value });
  
  // 根据操作符执行校验
  let isValid;
  switch(operator) {
    case '>':
      isValid = resolvedValue > Number(threshold);
      break;
    case '<':
      isValid = resolvedValue < Number(threshold);
      break;
    case '===':
      isValid = resolvedValue === threshold;
      break;
    // 可按需扩展更多操作符
    default:
      isValid = false;
  }
  console.log("Validation Result: " + isValid);
}

如果需要支持更复杂的校验规则,可以引入符合Locker Service要求的表达式解析库,或者提前将规则预定义为安全的JavaScript函数。

重要提示

  • Locker Service是Salesforce保障组件隔离和数据安全的核心机制,会限制eval、new Function()等动态代码执行手段。
  • 开发LWC时,务必以正式Salesforce环境的运行结果为准,不要依赖Playground的宽松校验。

内容的提问来源于stack exchange,提问作者Gokul Dudani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:56