记一个pm2启动pinus的路径问题

Posted on 2024-06-02 23:56  Kelvin.M  阅读(50)  评论(0)    收藏  举报

本打算尝试用pm2启动pinus集群做多机分布,结果pm2启动进程后一直无法用`pinus list`命令查看进程信息

在增加日志打印adminUserPath和presentPath后发现自己启动的目录不是编译后的`/dist`目录,

当代码使用pwd命令获取项目启动路径的时候确实可以找到项目的adminUser,可是编译前的文件都是ts,项目无法直接读取

pinus会在pinus-admin中尝试加载对应环境(如development)的config/adminUser文件来校验查询的账号密码

下面是pinus-admin/lib/util/utils.ts中的代码

function defaultAuthUser(msg, env, cb) {
    let adminUser = null;
    let appBase = process.cwd();
    // 这里获取路径
    let adminUserPath = path.join(appBase, constants_1.DEFAULT_ADMIN_PATH.ADMIN_USER);
    let presentPath = path.join(appBase, 'config', env, constants_1.DEFAULT_ADMIN_PATH.ADMIN_FILENAME);
    //加载文件内容
    if (canBeResolve(adminUserPath)) {
        adminUser = require(adminUserPath);
    }
    else if (canBeResolve(presentPath)) {
        adminUser = require(presentPath);
    }
    else {
        cb(null);
        return;
    }
    let username = msg['username'];
    let password = msg['password'];
    let md5Str = msg['md5'];
    let len = adminUser.length;
    if (md5Str) {
        // 校验
        for (let i = 0; i < len; i++) {
            let user = adminUser[i];
            let p = '';
            if (user['username'] === username) {
                p = md5(user['password']);
                if (password === p) {
                    cb(user);
                    return;
                }
            }
        }
    }
    else {
        for (let i = 0; i < len; i++) {
            let user = adminUser[i];
            if (user['username'] === username && user['password'] === password) {
                cb(user);
                return;
            }
        }
    }
    cb(null);
}