You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node模块语法错误:mysql2出现unexpected token问题求助

问题:使用mysql2连接MySQL时触发SyntaxError错误

我写了以下基础代码连接MySQL:

const mysql = require('mysql2');

var con = mysql.createConnection({
    host: "localhost",
    user: "abc",
    password: "123",
    database: "test"
});

con.connect(function (err) {
    if (err) throw err;
    console.log("Connected!");
});

运行后出现如下错误:

/home/mihir/Node_api/node_modules/lru-cache/dist/cjs/index.js:359
    #initializeTTLTracking() {
                          ^

SyntaxError: Unexpected token '('
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/home/mihir/Node_api/node_modules/lru-cache/dist/cjs/index-cjs.js:5:36)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)

我最初尝试使用普通mysql模块但报错,改用mysql2后遇到这个问题。我不想修改模块文件,网上也没找到可靠解决方案,现在卡在这里了。

解决方案

这个错误的核心原因是你的Node.js版本过低,不支持ES私有类方法(以#开头的语法)。mysql2依赖的lru-cache库新版本使用了该语法,而旧版Node.js无法解析。

有两种解决办法:

  1. 升级Node.js版本
    私有类方法从Node.js 14.13.1版本开始支持,建议直接升级到LTS版本(比如16.x、18.x或20.x),这样不仅能解决这个问题,还能获得更好的性能和安全性。
    如果你使用nvm管理Node.js版本,执行命令:

    nvm install --lts
    
  2. 安装兼容旧Node.js版本的mysql2版本
    如果你暂时无法升级Node.js,可以指定安装mysql2的旧版本,比如2.3.3,这个版本依赖的lru-cache不会使用私有类方法:

    npm install mysql2@2.3.3
    

内容的提问来源于stack exchange,提问作者digiworld 547

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:30:08