import pidFromPort from 'pid-from-port'; import chalk from 'chalk'; import fs from 'fs'; import path from 'path'; import { get } from 'lodash'; import superagent from 'superagent'; import ora from 'ora'; function requireAllLocalFunction(project) { const files = fs.readdirSync(project); const spinner = ora(); const failList: { name: string; message: string; }[] = []; for (const item of files) { const entry = path.join(project, item, 'index.js'); if (fs.existsSync(entry)) { try { require(entry); } catch (e) { failList.push({ name: item, message: e.message, }); } } } if (failList.length) { spinner.warn(`加载以下本地云函数失败`); const warning = chalk.keyword('orange'); failList.forEach((item) => { console.log(`* ${warning(item.name)}: ${item.message}`); }); } } async function debugProcess(project, port) { const pid = await pidFromPort(port); const processResult = process as any; processResult._debugProcess(pid); // 请求 http://127.0.0.1:9229/json const res = await superagent.get(`http://127.0.0.1:${process.debugPort}/json`); const devtoolsUrl = get(res, 'body.[0].devtoolsFrontendUrlCompat'); if (devtoolsUrl) { requireAllLocalFunction(project); return devtoolsUrl.replace(/^chrome-/, ''); } return ''; } export default debugProcess;