nodejs使用sequelize出错#initializeTTLTracking()

  1. 今天想着研究一下nodejs是否有像C#中freesql那样的数据库实体映射,来解决数据库字段手动更新操作,然后网上一搜索就找到了使用sequelize这个库来解决。
  2. 刚开始研究一个新东西并不是一帆风顺的,在网上找到相关的示例代码,都码完了,然后点击运行,结果报错了!
const {Sequelize} = require('sequelize');
const cfg = require('./configuration');
const db = cfg.db;
console.log(db);
const sequelize = new Sequelize(db.database, db.user, db.password, {
    host: db.host,
    port: db.port,
    dialect: db.dialect,
    logging: true,    // logging: true, 打印sql到控制台
    timezone: '+08:00',  //时间上的统一,这里是东八区,默认为0时区
    define: {  //全局的定义,会通过连接实例传递
        pool: {  // 使用连接池
            max: 5, // 连接池中最大连接数量
            min: 0, // 连接池中最小连接数量
            acquire: 30000,
            idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
        },
    }
});
sequelize.authenticate().then(()=>{
    console.log('数据库连接成功');
    require('./models/tbl_fruit_define').define(sequelize).then(r => {});
})
module.exports = {}

报错

D:\Project\nodejs\nodejs-express-demo\node_modules\mysql2\node_modules\lru-cache\dist\cjs\index.js:359
    #initializeTTLTracking() {
                          ^

SyntaxError: Unexpected 'token' '('
    at wrapSafe (internal/modules/cjs/loader.js:1071:16)
    at Module._compile (internal/modules/cjs/loader.js:1121:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
    at Module.load (internal/modules/cjs/loader.js:1001:32)
    at Function.Module._load (internal/modules/cjs/loader.js:900:14)
    at Module.require (internal/modules/cjs/loader.js:1043:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (D:\Project\nodejs\nodejs-express-demo\node_modules\mysql2\node_modules\lru-cache\dist\cjs\index-cjs.js:5:36)
    at Module._compile (internal/modules/cjs/loader.js:1157:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)

经过测试验证,是在实例化new Sequelize时候出了错。
刚开始猜测是node版本(v12.16.0)问题导致,但是看Sequelize官网说是支持node v10.0以上,所以避开node版本原因,后来经过一系列搜索和测试,找到是因为Sequelize其中使用的一个库mysql2的版本问题导致的,当时直接使用npm install -s mysql2安装的默认最新版本(3.2.3),安装后就是出现上面那个错误,在https://juejin.cn/post/7123155989200633870这里看到使用npm install -g mysql2安装mysql2,尝试安装,提示要使用node 16.14.0以上的,就猜测mysql2安装版本太新有问题,然后找到mysql2的历史版本,选了3.0.0通过npm install -s mysql2@3.0.0局部安装。

然后就成功解决了,我也挺意外,尝试一次就OK了^o^,然后还尝试把3.0.0卸载,装上3.2.3重试了一下,重新出现了上面那个错,确定了一下错误原因。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵东19970820

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值