mirror of
https://github.com/cool-team-official/cool-admin-midway.git
synced 2025-12-12 17:42: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 - 要检查的端口
|
* @param {number} port - 要检查的端口
|
||||||
* @returns {boolean} - 是否可用
|
* @returns {boolean} - 是否可用
|
||||||
*/
|
*/
|
||||||
function isPortAvailableSync(port) {
|
function isPortAvailableSync(port: number): boolean {
|
||||||
let available = false;
|
try {
|
||||||
let checked = false; // 新增标志变量,表示检查是否完成
|
if (process.platform === 'win32') {
|
||||||
const server = net.createServer();
|
// Windows 使用 netstat 检查端口
|
||||||
|
execSync(`netstat -ano | findstr :${port}`, { stdio: 'ignore' });
|
||||||
server.once('error', err => {
|
} else {
|
||||||
if (err.code === 'EADDRINUSE') {
|
// Linux/Mac 使用 lsof 检查端口
|
||||||
checked = true; // 标记检查完成
|
execSync(`lsof -i :${port}`, { stdio: 'ignore' });
|
||||||
server.close();
|
|
||||||
}
|
}
|
||||||
});
|
// 命令执行成功,端口被占用
|
||||||
|
return false;
|
||||||
server.once('listening', () => {
|
} catch (error) {
|
||||||
available = true; // 标记端口可用
|
// 命令执行失败,端口可用
|
||||||
checked = true; // 标记检查完成
|
return true;
|
||||||
server.close();
|
}
|
||||||
});
|
|
||||||
|
|
||||||
server.listen(port);
|
|
||||||
|
|
||||||
// 阻塞直到检查完成(checked === true)
|
|
||||||
// deasync.loopWhile(() => !checked);
|
|
||||||
return available;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,11 +27,16 @@ function isPortAvailableSync(port) {
|
|||||||
* @param {number} startPort - 起始端口
|
* @param {number} startPort - 起始端口
|
||||||
* @returns {number} - 可用的端口
|
* @returns {number} - 可用的端口
|
||||||
*/
|
*/
|
||||||
export function checkPort(startPort: number) {
|
export function checkPort(startPort: number): number {
|
||||||
let port = startPort;
|
let port = startPort;
|
||||||
while (port <= 65535) {
|
while (port <= 65535) {
|
||||||
if (isPortAvailableSync(port)) {
|
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;
|
return port;
|
||||||
}
|
}
|
||||||
port++;
|
port++;
|
||||||
|
|||||||
@ -12,7 +12,7 @@ export default {
|
|||||||
// 确保每个项目唯一,项目首次启动会自动生成
|
// 确保每个项目唯一,项目首次启动会自动生成
|
||||||
keys: '576848ea-bb0c-4c0c-ac95-c8602ef908b5',
|
keys: '576848ea-bb0c-4c0c-ac95-c8602ef908b5',
|
||||||
koa: {
|
koa: {
|
||||||
port: 8001,
|
port: checkPort(8001),
|
||||||
},
|
},
|
||||||
// 开启异步上下文管理
|
// 开启异步上下文管理
|
||||||
asyncContextManager: {
|
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