DeprecationWarning: timers.unenroll () est obsolète. Veuillez utiliser clearTimeout à la place

Tout en suivant cette vidéo sur youtube pour en apprendre davantage sur node.js

J’ai eu cette erreur

$ nodemon index.js
(node: 18129) [DEP0096] DeprecationWarning: timers.unenroll () est obsolète. Veuillez utiliser clearTimeout à la place.

Le serveur d’applications est toujours capable de fonctionner. Cependant, comme j’essaie d’append un routeur pour append un élément en tant que vidéo, il ne passera jamais avec succès. Cependant, je l’appellerais à moitié, car je vois le journal de données dans le terminal, mais je ne retourne jamais à la firebase database. comme vous pouvez le voir, nous pouvons voir le nom xxx sous le nom 40 en tant que prix dans le terminal après m’être interrogé

http://localhost:4000/products/add?name=xxx&price=40 

dans le navigateur comme dans la vidéo vers 10h52. (Je l’ai obtenu après avoir codé en dur dans le fichier index.js. Pourquoi ne puis-je pas l’interroger comme l’a fait la vidéo?) Je suppose que c’est la cause de timers.unenorll (). mais je l’ai googlé, tout ce que je trouve est celui- ci , et celui- ci (sur la page https://nodejs.org/fr/blog/release/v10.0.0/ )

entrez la description de l'image ici

mais je ne sais pas quoi en faire. ne peut pas trouver une solution.veuillez aide

 $ node -v v10.0.0 

entrez la description de l'image ici

 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`) }); 

Le délinquant semble être le module mysql à cet endroit du code où vous voyez un appel à Timers.unenroll(sequence) :

https://github.com/mysqljs/mysql/blob/61b173cbc3e207c5497c6c45c98a4871c01701f3/lib/protocol/Protocol.js#L325

 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); }; 

D’après divers commentaires sur le site Github de node.js, il semblerait que l’API soit obsolète, mais ne sera pas supprimée de si tôt. Si tout va bien, mysql va passer à un substitut à un moment donné. Vous pouvez vous renseigner sur leur site Github si vous voulez en savoir plus. La question spécifique a déjà été déposée sur le site mysql ici: https://github.com/mysqljs/mysql/issues/2003 et la réponse actuelle est que le module mysql ne prend pas encore en charge node.js 10.x.

Cela signifie probablement que vous pourriez restaurer la version de votre nœud vers la version 8.x si vous le souhaitiez et que le problème aurait probablement disparu ou attendre simplement une version de mysql prenant en charge directement nodejs 10.x.

 npm install [email protected] --save 

Il suffit de mettre à jour la bibliothèque mysql vers la dernière version.