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

NestJS中导入mysql2/promise包失败,调用createConnection报错

问题

在NestJS项目中按照Drizzle ORM的MySQL集成指引操作,导入mysql2/promise包时出现异常,实现代码如下:

import { drizzle } from "drizzle-orm/mysql2";
import mysql from "mysql2/promise";
import * as schema from './schema';

export const DrizzleAsyncProvider = 'drizzleProvider';

export const drizzleProvider = {
  provide: DrizzleAsyncProvider,
  useFactory: async () => {
    console.log(mysql, '<<<');

    const connection = await mysql.createConnection({
      host: 'host',
      user: 'user',
      database: 'database',
      password: 'password'
    });
    const db = drizzle(connection, { schema, mode: 'default' });

    return db;
  },
  exports: [DrizzleAsyncProvider],
}

运行时抛出错误:

[Nest] 16326  - 04/20/2024, 8:31:46 PM     LOG [NestFactory] Starting Nest application...
undefined <<<
[Nest] 16326  - 04/20/2024, 8:31:46 PM   ERROR [ExceptionHandler] Cannot read properties of undefined (reading 'createConnection')
TypeError: Cannot read properties of undefined (reading 'createConnection')

错误显示导入的mysql对象为undefined,无法调用createConnection方法。

解决方案

  • 重新安装mysql2依赖
    先排查是否依赖安装不完整,执行命令重新安装:

    npm uninstall mysql2 && npm install mysql2
    # 若使用pnpm或yarn,替换为对应包管理器命令
    
  • 调整导入语法
    mysql2/promise的导出格式可能和默认导入不兼容,可改用两种方式:

    1. 直接导入createConnection方法:
      import { drizzle } from "drizzle-orm/mysql2";
      import { createConnection } from "mysql2/promise";
      import * as schema from './schema';
      
      // ... useFactory中直接调用
      const connection = await createConnection({ /* 配置项 */ });
      
    2. 使用命名空间导入,并确保TypeScript配置正确:
      import * as mysql from "mysql2/promise";
      
      同时在项目根目录的tsconfig.json中开启ES模块兼容:
      {
        "compilerOptions": {
          "esModuleInterop": true,
          "allowSyntheticDefaultImports": true
        }
      }
      
  • 验证NestJS模块配置
    确认drizzleProvider已被添加到对应模块的providers数组中,若需要跨模块复用,需在模块的exports数组中声明DrizzleAsyncProvider。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:46:25