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

Node.js出现SyntaxError: Invalid left-hand side in assignment错误求助

错误分析与解决方案

错误原因

你遇到的SyntaxError: Invalid left-hand side in assignment是运算符优先级冲突导致的:
JavaScript中&&的优先级高于=,所以你写的startDate == "''" && startDate= new Date().toISOString().slice(0, 10);会被引擎解析为:

(startDate == "''" && startDate) = new Date().toISOString().slice(0, 10);

括号里的表达式是一个布尔值或变量引用,不能作为赋值操作的左侧目标,因此触发语法错误。

修复方案

方案1:给赋值语句添加括号

强制改变运算符优先级,让赋值操作在&&的右侧整体执行:

viewInvoiceByDate: (params, callBack) => {
    let startDate = params.date;
    let endsDate = params.endDate;
    
    startDate == "''" && (startDate = new Date().toISOString().slice(0, 10));
    endsDate == "''" && (endsDate = new Date().toISOString().slice(0, 10));
    pool.query(
      `SELECT * FROM cash_management WHERE date BETWEEN ${startDate} AND ${endsDate} `,
      (error, results, fields) => {
        if (error) {
          return callBack(error);
        }
        return callBack(null, results);
      }
    );
  },

方案2:改用if语句(推荐)

短路与的赋值写法可读性差,改用if语句可以彻底避免优先级问题,代码更清晰:

viewInvoiceByDate: (params, callBack) => {
    let startDate = params.date;
    let endsDate = params.endDate;
    
    if (startDate === "''") {
      startDate = new Date().toISOString().slice(0, 10);
    }
    if (endsDate === "''") {
      endsDate = new Date().toISOString().slice(0, 10);
    }
    pool.query(
      `SELECT * FROM cash_management WHERE date BETWEEN ${startDate} AND ${endsDate} `,
      (error, results, fields) => {
        if (error) {
          return callBack(error);
        }
        return callBack(null, results);
      }
    );
  },

额外提醒:SQL注入风险

当前代码使用模板字符串拼接SQL参数,存在严重的SQL注入漏洞。建议改用参数化查询:

pool.query(
  'SELECT * FROM cash_management WHERE date BETWEEN ? AND ?',
  [startDate, endsDate],
  (error, results, fields) => {
    if (error) {
      return callBack(error);
    }
    return callBack(null, results);
  }
);

参数化查询会自动处理参数转义,彻底避免SQL注入问题。

内容的提问来源于stack exchange,提问作者Chamidu Purage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:10:35