Node.js+MySQL项目报name标识符已声明、解构缺初始化错误如何解决?
问题根因
两个报错全部来自模型层create函数中的错误代码行:
const sql = 'INSERT INTO client (name, about, site) VALUES (?, ?, ?)', [name, about, site];
这行使用逗号分隔的写法属于JS同一声明语句定义多个变量的语法,直接触发两个问题:
- 试图在声明
sql变量的同时,对[name, about, site]做解构赋值但没有提供右值,触发Missing initializer in destructing declaration报错 - 重复声明
name、about、site三个变量,和create函数的入参名冲突,触发Identifier 'name' has already been declared报错
修复方案
仅需要修改模型层的create函数写法即可,路由层代码无错误不需要调整,两种合法写法可选:
写法1:单独定义SQL和参数变量
const create = async (name, about, site) => { const sql = 'INSERT INTO client (name, about, site) VALUES (?, ?, ?)'; const params = [name, about, site]; const [result] = await connection.execute(sql, params); return result; };
写法2:直接传参给execute方法
const create = async (name, about, site) => { const [result] = await connection.execute( 'INSERT INTO client (name, about, site) VALUES (?, ?, ?)', [name, about, site] ); return result; };
修复完成后重启nodemon即可正常运行。
内容的提问来源于stack exchange,提问作者brunacamposxx
相关产品推荐
相关产品推荐

