import chalk from 'chalk'; import cp from 'child_process'; import fs from 'fs'; import path from 'path'; import detect from 'detect-port'; import server from '@fiora/config/server'; import initRedis from '@fiora/database/redis/initRedis'; import initMongoDB from '@fiora/database/mongoose/initMongoDB'; export async function doctor() { console.log(chalk.yellow('===== Run Fiora Doctor =====')); const nodeVersion = cp.execSync('node --version').toString(); console.log( chalk.green(`node ${nodeVersion.slice(0, nodeVersion.length - 1)}`), ); await initMongoDB(); console.log(chalk.green('MongoDB is OK')); await (async () => new Promise((resolve) => { const redis = initRedis(); redis.on('connect', resolve); }))(); console.log(chalk.green('Redis is OK')); const avaliablePort = await detect(server.port); if (avaliablePort === server.port) { console.log(chalk.green(`Port [${server.port}] is OK`)); } else { console.log(chalk.red(`Port [${server.port}] was occupied`)); } const indexFilePath = path.resolve( __dirname, '../../server/public/index.html', ); const indexFile = fs.readFileSync(indexFilePath); if (!indexFile) { console.log(chalk.red('Homepage not exists')); } else if (indexFile.toString().includes('默认首页')) { console.log( chalk.red( 'Homepage is default. Please build web client by [yarn build:web]', ), ); } else { console.log(chalk.green(`Homepage is OK`)); } } async function run() { await doctor(); process.exit(0); } export default run;