NodeJS TypeError:无法读取未定义的属性(阅读“constructor”)

zzzyeukh  于 2023-01-30  发布在  Node.js
关注(0)|答案(2)|浏览(407)

请帮帮我。
我正在使用node-mysql2库
我有SQL查询,每当运行查询时,如果查询中的某些变量为空,就会触发此错误。这通常发生在会话变量为空时。AgentID =空或DealerID =空。
错误源于mysql2 connection.js文件

C:\inetpub\wwwroot\pavstockallocatebot\node_modules\mysql2\lib\connection.js:538
    if (sql.constructor === Commands.Query) {
            ^
    TypeError: Cannot read properties of undefined (reading 'constructor')
    • 触发位置:**
query(sql, values, cb) {
    let cmdQuery;
    if (sql.constructor === Commands.Query) {
      cmdQuery = sql;
    } else {
      cmdQuery = Connection.createQuery(sql, values, cb, this.config);
    }
    this._resolveNamedPlaceholders(cmdQuery);
    const rawSql = this.format(cmdQuery.sql, cmdQuery.values !== undefined ? cmdQuery.values : []);
    cmdQuery.sql = rawSql;
    return this.addCommand(cmdQuery);
  }

它冻结了我的整个应用程序。并且不允许我重新启动应用程序。我该如何添加一个错误处理程序来检查变量是否未定义或为空,以避免出现此错误。当我出现此错误时,请适当地处理它。

jvlzgdj9

jvlzgdj91#

有许多编码风格,但这是一种解决方案。
它使应用程序崩溃,因为这是一个“未捕获”的错误。所以让我们捕获它。

try {
    //this will error
    if (sql.constructor === Commands.Query) {}
} catch(error) {
    // then you can console.log the error here
    // and do something else.
}

理想情况下,你应该检查一下sql是否真实,以及在任何逻辑触及这部分代码之前,你的sql连接是否已经建立,但是这可能会演变成一个更大的关于搭建和服务器逻辑架构的讨论。

e37o9pze

e37o9pze2#

检查是否有帮助

if(sql && sql.constructor === Commands.Query)

if(sql?.constructor === Commands.Query)

相关问题