mirror of
https://github.com/cool-team-official/cool-admin-midway.git
synced 2025-12-11 00:22:49 +00:00
完善端口占用检测
This commit is contained in:
parent
1463b4f234
commit
2ca58b4f88
@ -1,33 +1,25 @@
|
||||
const net = require('net');
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
/**
|
||||
* 同步检查端口是否可用
|
||||
* 同步检查端口是否可用(通过系统命令)
|
||||
* @param {number} port - 要检查的端口
|
||||
* @returns {boolean} - 是否可用
|
||||
*/
|
||||
function isPortAvailableSync(port) {
|
||||
let available = false;
|
||||
let checked = false; // 新增标志变量,表示检查是否完成
|
||||
const server = net.createServer();
|
||||
|
||||
server.once('error', err => {
|
||||
if (err.code === 'EADDRINUSE') {
|
||||
checked = true; // 标记检查完成
|
||||
server.close();
|
||||
function isPortAvailableSync(port: number): boolean {
|
||||
try {
|
||||
if (process.platform === 'win32') {
|
||||
// Windows 使用 netstat 检查端口
|
||||
execSync(`netstat -ano | findstr :${port}`, { stdio: 'ignore' });
|
||||
} else {
|
||||
// Linux/Mac 使用 lsof 检查端口
|
||||
execSync(`lsof -i :${port}`, { stdio: 'ignore' });
|
||||
}
|
||||
});
|
||||
|
||||
server.once('listening', () => {
|
||||
available = true; // 标记端口可用
|
||||
checked = true; // 标记检查完成
|
||||
server.close();
|
||||
});
|
||||
|
||||
server.listen(port);
|
||||
|
||||
// 阻塞直到检查完成(checked === true)
|
||||
// deasync.loopWhile(() => !checked);
|
||||
return available;
|
||||
// 命令执行成功,端口被占用
|
||||
return false;
|
||||
} catch (error) {
|
||||
// 命令执行失败,端口可用
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -35,11 +27,16 @@ function isPortAvailableSync(port) {
|
||||
* @param {number} startPort - 起始端口
|
||||
* @returns {number} - 可用的端口
|
||||
*/
|
||||
export function checkPort(startPort: number) {
|
||||
export function checkPort(startPort: number): number {
|
||||
let port = startPort;
|
||||
while (port <= 65535) {
|
||||
if (isPortAvailableSync(port)) {
|
||||
console.log(`Valid port: ${port}`);
|
||||
if (port !== startPort) {
|
||||
console.warn(
|
||||
'\x1b[33m%s\x1b[0m',
|
||||
`Port ${startPort} is occupied, using port ${port}`
|
||||
);
|
||||
}
|
||||
return port;
|
||||
}
|
||||
port++;
|
||||
|
||||
@ -12,7 +12,7 @@ export default {
|
||||
// 确保每个项目唯一,项目首次启动会自动生成
|
||||
keys: '576848ea-bb0c-4c0c-ac95-c8602ef908b5',
|
||||
koa: {
|
||||
port: 8001,
|
||||
port: checkPort(8001),
|
||||
},
|
||||
// 开启异步上下文管理
|
||||
asyncContextManager: {
|
||||
|
||||
136
src/index.ts
136
src/index.ts
@ -1,136 +0,0 @@
|
||||
/** This file generated by @midwayjs/bundle-helper */
|
||||
export { MainConfiguration as Configuration } from './configuration';
|
||||
export * from './comm/path';
|
||||
export * from './comm/port';
|
||||
export * from './comm/utils';
|
||||
export * from './config/config.default';
|
||||
export * from './modules/base/entity/base';
|
||||
export * from './modules/user/entity/wx';
|
||||
export * from './modules/user/entity/info';
|
||||
export * from './modules/user/entity/address';
|
||||
export * from './modules/task/entity/log';
|
||||
export * from './modules/task/entity/info';
|
||||
export * from './modules/space/entity/type';
|
||||
export * from './modules/space/entity/info';
|
||||
export * from './modules/recycle/entity/data';
|
||||
export * from './modules/plugin/entity/info';
|
||||
export * from './modules/dict/entity/type';
|
||||
export * from './modules/dict/entity/info';
|
||||
export * from './modules/demo/entity/goods';
|
||||
export * from './modules/base/entity/sys/user_role';
|
||||
export * from './modules/base/entity/sys/user';
|
||||
export * from './modules/base/entity/sys/role_menu';
|
||||
export * from './modules/base/entity/sys/role_department';
|
||||
export * from './modules/base/entity/sys/role';
|
||||
export * from './modules/base/entity/sys/param';
|
||||
export * from './modules/base/entity/sys/menu';
|
||||
export * from './modules/base/entity/sys/log';
|
||||
export * from './modules/base/entity/sys/department';
|
||||
export * from './modules/base/entity/sys/conf';
|
||||
export * from './entities';
|
||||
export * from './modules/base/db/tenant';
|
||||
export * from './config/config.local';
|
||||
export * from './config/config.prod';
|
||||
export * from './interface';
|
||||
export * from './modules/base/service/sys/conf';
|
||||
export * from './modules/base/service/sys/log';
|
||||
export * from './modules/base/middleware/log';
|
||||
export * from './modules/base/middleware/authority';
|
||||
export * from './modules/base/service/translate';
|
||||
export * from './modules/base/middleware/translate';
|
||||
export * from './modules/base/config';
|
||||
export * from './modules/plugin/interface';
|
||||
export * from './modules/plugin/service/center';
|
||||
export * from './modules/plugin/event/init';
|
||||
export * from './modules/plugin/service/types';
|
||||
export * from './modules/plugin/service/info';
|
||||
export * from './modules/base/dto/login';
|
||||
export * from './modules/base/service/sys/data';
|
||||
export * from './modules/base/service/sys/menu';
|
||||
export * from './modules/base/service/sys/department';
|
||||
export * from './modules/base/service/sys/perms';
|
||||
export * from './modules/base/service/sys/role';
|
||||
export * from './modules/base/service/sys/login';
|
||||
export * from './modules/base/service/sys/user';
|
||||
export * from './modules/base/controller/admin/comm';
|
||||
export * from './modules/base/service/sys/param';
|
||||
export * from './modules/base/controller/admin/open';
|
||||
export * from './modules/base/controller/admin/sys/department';
|
||||
export * from './modules/base/controller/admin/sys/log';
|
||||
export * from './modules/base/controller/admin/sys/menu';
|
||||
export * from './modules/base/controller/admin/sys/param';
|
||||
export * from './modules/base/controller/admin/sys/role';
|
||||
export * from './modules/base/controller/admin/sys/user';
|
||||
export * from './modules/base/controller/app/comm';
|
||||
export * from './modules/base/event/app';
|
||||
export * from './modules/base/event/menu';
|
||||
export * from './modules/base/job/log';
|
||||
export * from './modules/demo/config';
|
||||
export * from './modules/demo/service/goods';
|
||||
export * from './modules/demo/controller/admin/goods';
|
||||
export * from './modules/demo/service/tenant';
|
||||
export * from './modules/demo/controller/admin/tenant';
|
||||
export * from './modules/demo/service/cache';
|
||||
export * from './modules/demo/controller/open/cache';
|
||||
export * from './modules/demo/controller/open/event';
|
||||
export * from './modules/demo/controller/open/goods';
|
||||
export * from './modules/demo/controller/open/plugin';
|
||||
export * from './modules/demo/queue/comm';
|
||||
export * from './modules/demo/queue/getter';
|
||||
export * from './modules/demo/controller/open/queue';
|
||||
export * from './modules/demo/service/rpc';
|
||||
export * from './modules/demo/controller/open/rpc';
|
||||
export * from './modules/demo/controller/open/sse';
|
||||
export * from './modules/demo/controller/open/tenant';
|
||||
export * from './modules/demo/service/transaction';
|
||||
export * from './modules/demo/controller/open/transaction';
|
||||
export * from './modules/demo/event/comm';
|
||||
export * from './modules/demo/queue/single';
|
||||
export * from './modules/dict/config';
|
||||
export * from './modules/dict/service/info';
|
||||
export * from './modules/dict/controller/admin/info';
|
||||
export * from './modules/dict/service/type';
|
||||
export * from './modules/dict/controller/admin/type';
|
||||
export * from './modules/dict/controller/app/info';
|
||||
export * from './modules/plugin/config';
|
||||
export * from './modules/plugin/controller/admin/info';
|
||||
export * from './modules/plugin/event/app';
|
||||
export * from './modules/plugin/hooks/base';
|
||||
export * from './modules/plugin/hooks/upload/interface';
|
||||
export * from './modules/plugin/hooks/upload/index';
|
||||
export * from './modules/recycle/config';
|
||||
export * from './modules/recycle/service/data';
|
||||
export * from './modules/recycle/controller/admin/data';
|
||||
export * from './modules/recycle/event/data';
|
||||
export * from './modules/recycle/schedule/data';
|
||||
export * from './modules/space/config';
|
||||
export * from './modules/space/service/info';
|
||||
export * from './modules/space/controller/admin/info';
|
||||
export * from './modules/space/service/type';
|
||||
export * from './modules/space/controller/admin/type';
|
||||
export * from './modules/swagger/builder';
|
||||
export * from './modules/swagger/config';
|
||||
export * from './modules/swagger/controller/index';
|
||||
export * from './modules/swagger/event/app';
|
||||
export * from './modules/task/service/bull';
|
||||
export * from './modules/task/queue/task';
|
||||
export * from './modules/task/service/local';
|
||||
export * from './modules/task/service/info';
|
||||
export * from './modules/task/middleware/task';
|
||||
export * from './modules/task/config';
|
||||
export * from './modules/task/controller/admin/info';
|
||||
export * from './modules/task/event/app';
|
||||
export * from './modules/task/service/demo';
|
||||
export * from './modules/user/middleware/app';
|
||||
export * from './modules/user/config';
|
||||
export * from './modules/user/service/address';
|
||||
export * from './modules/user/controller/admin/address';
|
||||
export * from './modules/user/controller/admin/info';
|
||||
export * from './modules/user/controller/app/address';
|
||||
export * from './modules/user/service/wx';
|
||||
export * from './modules/user/controller/app/comm';
|
||||
export * from './modules/user/service/sms';
|
||||
export * from './modules/user/service/info';
|
||||
export * from './modules/user/controller/app/info';
|
||||
export * from './modules/user/service/login';
|
||||
export * from './modules/user/controller/app/login';
|
||||
Loading…
x
Reference in New Issue
Block a user