Back to Node Mysql2

Cloudflare Workers

website/docs/documentation/connect-on-cloudflare.mdx

3.22.32.0 KB
Original Source

import { History } from '@site/src/components/History';

Cloudflare Workers

<History records={[ { version: '3.13.0', changes: [ <> Support for <em>non-eval</em> parsers by using{' '} <strong>disableEval</strong> option. </>, ], }, ]} />

Prerequisites

To learn how to create a Cloudflare Worker project, please refer to Cloudflare Workers Documentation.

Setup

Wrangler

MySQL2 relies on Node.js modules, such as net, events, stream, tls, etc. You can enable Node.js compatibility for Cloudflare Workers by using the "nodejs_compat" flag through the wrangler.jsonc file:

json
{
  "compatibility_flags": ["nodejs_compat"]
}

:::important The minimum compatibility date is 2025-02-24, for example:

json
{
  "compatibility_date": "2025-02-24",
  "compatibility_flags": ["nodejs_compat"]
}

:::

MySQL2 connection

MySQL2 uses a code generation-based parser for performance by default, but since Cloudflare Workers don't offer support for evaluations, you can disable it by using the disableEval option:

ts
import { createConnection } from 'mysql2/promise';

export default {
  async fetch(): Promise<Response> {
    const conn = await createConnection({
      host: 'localhost',
      user: 'root',
      database: 'test',
      // highlight-start
      disableEval: true,
      // highlight-end
    });

    const [results] = await conn.query('SHOW TABLES;');

    return new Response(JSON.stringify(results));
  },
} satisfies ExportedHandler<Env>;

:::tip For required SSL connections, it is recommended to use the Cloudflare Hyperdrive connection pool. :::