Nodejs express4 项目使用 express-formidable 做文件上传后,原本成功的连接 mysql 的语句一直跑不动,也没抛异常
Nodejs express4 项目使用 express-formidable 做文件上传后,原本成功的连接 mysql 的语句一直跑不动,也没抛异常
项目同样是在自动生成的 app.js 里配置的
const formidableMiddleware = require(‘express-formidable’);
以及 app.use(formidableMiddleware())。
拿掉这两句,连接 mysql 的那些是没问题的。
知道 req.body 因为那个中间件变成了 req.fields 和 req.files,不然转发请求到腾讯 cos 做的文件上传也不会成功。就是忙了半天图片上传忙成功后,回头发现别的连接数据库的接口全出问题了,POST /comic/list - - ms - -
当然,如果各位有人试过项目使用 express-formidable 并且没有出现连接 mysql 的问题,直接反驳不存在这种问题就行了,我自行去排查一下
(今天特地把连接语句换成了官方给的简单版 http://www.expressjs.com.cn/guide/database-integration.html#mysql,就怕你们直接贴个官链水完就跑)
老老实实用 formidable 去了
在Node.js的Express 4项目中,如果在使用express-formidable
处理文件上传后,原本能成功执行的MySQL连接语句出现问题但不抛出异常,可能是由于几个潜在原因导致的。以下是一些可能的解决步骤和代码示例:
-
检查中间件顺序: 确保
express-formidable
中间件在处理请求之前正确配置,且不影响后续的数据库连接逻辑。const express = require('express'); const formidable = require('express-formidable'); const mysql = require('mysql'); const app = express(); app.use(formidable({ multiples: true, uploadDir: './uploads', keepExtensions: true })); const db = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'test' }); db.connect((err) => { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + db.threadId); }); app.post('/upload', (req, res) => { // 处理文件上传后的逻辑 res.send('File uploaded'); }); app.listen(3000, () => console.log('Server running on port 3000'));
-
错误处理: 在数据库连接和查询中增加详细的错误处理逻辑,确保任何异常都能被捕获和记录。
-
资源竞争: 如果服务器在处理大量文件上传时资源受限,可能会影响数据库连接。检查服务器资源使用情况,如内存和CPU。
-
日志记录: 增加更多的日志记录点,帮助定位问题发生的具体位置。
确保逐一排查以上可能的问题点,通常可以定位并解决连接MySQL失败的问题。