关注此youtube video以了解node.js
我收到了这个错误
$ nodemon index.js
(node:18129)[DEP0096] DeprecationWarning:不推荐使用timers.unenroll()。请改用clearTimeout。
App服务器仍然可以运行。但是,当我尝试添加路由器以添加项目作为视频时,它从未成功通过。但是,我会称之为半成功,因为我确实看到了终端中的数据日志,但从未返回数据库。正如您所看到的,我查询后,我们可以在终端中看到xxx名称为40作为终端价格
http://localhost:4000/products/add?name=xxx&price=40
在浏览器中,就像在10:52左右的视频中一样。 (我在index.js文件中进行了硬编码后才开始工作。为什么我不能像视频一样查询它?)我假设timers.unenorll()导致这个问题。但我用谷歌搜索它,我发现这是one,而one(在https://nodejs.org/en/blog/release/v10.0.0/页面上)
但不知道如何处理它。斜面'找到解决方案。请帮助
$ node -v
v10.0.0
const express = require('express');
const cors = require('cors');
const mysql = require('mysql');
const app = express();
app.use(cors());
const SELECT_ALL_PRODUCT_QUERY = 'SELECT * FROM products';
const connection = mysql.createConnection({
host: 'localhost',
user: 'genius',
password: 'genius',
database: 'react_sql'
});
connection.connect(err => {
if(err) {
return err;
}
});
console.log(connection);
app.get('/',(req, res) => {
res.send('go to /products to see the genius gyms')
});
app.get('/products/add', (req, res) => {
const {name, price} = req.query;
//console.log(name, price);
const INSERT_PRODUCTS_QUERY = `INSERT INTO products(name, price) VALUES('${name}',${price})`;
connection.query(INSERT_PRODUCTS_QUERY,(err, results) => {
if(err) {
return res.send(err)
} else {
return res.send('successfully added product')
}
});
});
app.get('/products', (req, res) => {
connection.query(SELECT_ALL_PRODUCT_QUERY,(err,results) => {
if(err) {
return res.send(err)
}
else {
return res.json({
data: results
})
}
});
});
app.listen(4000,() => {
console.log(`Genius gyms listening on
port 4000`)
});
答案 0 :(得分:13)
ImpexService
只需将mysql库更新到最新版本。
答案 1 :(得分:5)
攻击者似乎是代码中此位置的mysql模块,您看到Timers.unenroll(sequence)
的调用:
Protocol.prototype._dequeue = function(sequence) {
Timers.unenroll(sequence);
// No point in advancing the queue, we are dead
if (this._fatalError) {
return;
}
this._queue.shift();
var sequence = this._queue[0];
if (!sequence) {
this.emit('drain');
return;
}
this._parser.resetPacketNumber();
this._startSequence(sequence);
};
来自node.js Github网站上的各种评论,听起来API已被弃用,但很快就不会被删除。希望mysql在某些时候会切换到替代品。如果您想了解更多信息,可以查询他们的Github网站。具体问题已在mysql网站上提交:https://github.com/mysqljs/mysql/issues/2003,当前的响应是mysql模块还不支持node.js 10.x。
这可能意味着您可以将节点版本回滚到8.x,如果您愿意,问题可能会消失,或者只是等待直接支持nodejs 10.x的mysql版本。