Node.js连接MySQL插入数据失败,遇两类报错求助
解决两类Node.js+MySQL开发错误:数据库访问拒绝与next未定义
一、数据库访问被拒绝:Access denied for user 'root'@'localhost' (using password: YES)
原因
项目数据库连接配置的用户名/密码与XAMPP中MySQL的实际设置不匹配,或是root用户的localhost访问权限未正确配置。
解决方案
- 核对XAMPP MySQL的root密码:打开XAMPP控制面板,点击MySQL模块的「Admin」进入phpMyAdmin,在「用户账户」页面查看
root@localhost的密码设置。 - 修正项目数据库连接配置:找到项目中的数据库配置文件(如
db.js、config.js),确保username为'root',password与phpMyAdmin中记录的一致。若XAMPP默认root无密码,将配置里的password设为空字符串''。 - 重置或授权root用户权限(若上述步骤无效):在phpMyAdmin的SQL控制台执行以下语句:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密码' WITH GRANT OPTION; FLUSH PRIVILEGES;
二、代码中next未定义:ReferenceError: next is not defined
原因
路由处理函数未将next作为参数传入,导致调用next(err)时找不到该变量。
解决方案
修改路由代码,将next添加到处理函数的参数列表中:
router.post("/", async (req, res, next) => { try { res.json(await tourist.create(req.body)); } catch (err) { console.error(`Error while creating Tourist!`, err.message); next(err); } })
额外建议:确保Express应用配置了全局错误处理中间件,以正确捕获next(err)传递的错误:
app.use((err, req, res, next) => { res.status(500).json({ error: err.message }); });
关于HTML提交按钮的补充
当前报错与HTML按钮无直接关联,若后续表单提交出现问题,需检查submitTouristForm()函数的实现逻辑,确保表单数据能正确以POST请求发送到目标路由。
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

