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

如何修复Mojo.js启动时出现的"username is required"错误?

问题

启动Mojo.js项目时触发username is required错误,无法在8080端口正常启动服务。

我的package.json中的dev命令:

"dev": "NODE_ENV=development nodemon -e 'js,tmpl,css,yml' ./index.js server -l 'http://*:8080'"

index.js核心代码片段(数据库连接相关):

import mojo, { yamlConfigPlugin } from '@mojojs/core';
import Surreal from 'surrealdb.js';
import dotenv from 'dotenv-flow';

dotenv.config();
export const app = mojo();

const { DB_USER, DB_PASS, DB_NS, DB_DB } = process.env;

app.addAppHook('app:start', async (app) => {
    if (!app.models.db) {
        app.models.db = new Surreal('http://127.0.0.1:9021/rpc');
        await app.models.db.signin({
            user: DB_USER,
            pass: DB_PASS
        });

        await app.models.db.use(DB_NS, DB_DB);
    }
    // 其他模型初始化代码
});

// 路由及其他代码

app.start();
解决方案

这个错误是因为SurrealDB的signin方法未获取到有效用户名(DB_USER为空),按以下步骤排查修复:

  • 检查.env配置文件
    确保项目根目录存在.env或.env.development文件,且包含完整数据库配置:

    DB_USER=你的数据库用户名
    DB_PASS=你的数据库密码
    DB_NS=命名空间
    DB_DB=数据库名称
    

    dotenv-flow会优先加载对应环境的配置文件,开发环境下优先读取.env.development,不存在则回退到.env。

  • 验证环境变量加载情况
    在dotenv.config()后添加日志,确认变量是否被正确读取:

    dotenv.config();
    console.log('DB_USER:', process.env.DB_USER); // 查看输出是否为空
    

    若输出为空,检查.env文件路径是否在项目根目录,或文件名是否符合dotenv-flow规则。

  • 修复跨平台环境变量传递
    Windows环境下NODE_ENV=development写法不兼容,需修改命令:

    "dev": "set NODE_ENV=development && nodemon -e 'js,tmpl,css,yml' ./index.js server -l 'http://*:8080'"
    

    或使用cross-env统一跨平台设置:

    1. 安装依赖:npm install cross-env --save-dev
    2. 修改命令:
      "dev": "cross-env NODE_ENV=development nodemon -e 'js,tmpl,css,yml' ./index.js server -l 'http://*:8080'"
      
  • 添加变量缺省值
    为环境变量设置缺省值,避免空值传递给SurrealDB:

    const DB_USER = process.env.DB_USER || 'root'; // 按你的SurrealDB默认配置调整
    const DB_PASS = process.env.DB_PASS || 'root';
    const DB_NS = process.env.DB_NS || 'test';
    const DB_DB = process.env.DB_DB || 'test';
    
  • 确认SurrealDB服务状态
    确保SurrealDB服务已在http://127.0.0.1:9021正常启动,且配置的用户名/密码在数据库中存在(默认用户名密码为root/root)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:46:15