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

使用Vite搭配MariaDb时出现process is not defined错误求助

解决process is not defined(MariaDb库在前端环境运行)的问题

问题本质

你遇到的错误核心原因是:mariadb是Node.js后端专属的数据库驱动库,完全不支持在浏览器(前端)环境中运行。错误路径里的localhost:4000/node_modules/.vite/说明你的数据库连接/查询代码被Vite打包到了前端代码中,而浏览器环境不存在Node.js的process全局对象,因此触发了这个报错。

解决方案

1. 迁移数据库代码到后端

把src文件夹中涉及MariaDb连接、查询的代码,全部移到Express API的后端路由/控制器文件里。示例:

// 后端 routes/db.js
const express = require('express');
const mariadb = require('mariadb');
const router = express.Router();

// 创建数据库连接池
const pool = mariadb.createPool({
  host: 'localhost',
  user: '你的数据库用户名',
  password: '你的数据库密码',
  database: '目标数据库名'
});

// 编写接口处理数据库查询
router.get('/get-data', async (req, res) => {
  let conn;
  try {
    conn = await pool.getConnection();
    const rows = await conn.query('SELECT * FROM 你的表名');
    res.json(rows);
  } catch (err) {
    res.status(500).json({ error: err.message });
  } finally {
    if (conn) conn.release();
  }
});

module.exports = router;

2. 前端通过HTTP请求与后端交互

前端代码不要直接引用mariadb,而是通过fetch或axios调用后端接口获取数据。示例:

// 前端 src/api.js
async function fetchDatabaseData() {
  try {
    const response = await fetch('/api/get-data');
    const data = await response.json();
    console.log(data);
    // 这里处理拿到的数据
  } catch (err) {
    console.error('数据请求失败:', err);
  }
}

3. 配置Vite代理(如果是Vite+Express同构项目)

如果你的项目是Vite+Express组合开发,需要:

  • 让Express后端监听独立端口(比如3000),Vite开发服务器监听另一个端口(比如4000)
  • 在vite.config.js中设置代理,转发前端API请求到后端:
// vite.config.js
export default {
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true
      }
    }
  }
}

4. 清理前端代码中的无效引用

检查你的前端代码,确保没有import mariadb from 'mariadb'或require('mariadb')这类语句,只在后端代码中引入mariadb库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:31:04