diff --git a/packages/cli/src/actions/proxy.ts b/packages/cli/src/actions/proxy.ts index f3f27ef7..27c80951 100644 --- a/packages/cli/src/actions/proxy.ts +++ b/packages/cli/src/actions/proxy.ts @@ -166,6 +166,17 @@ function startServer(client: ClientContract, schema: any, options: Opt console.log(`You can visit ZenStack Studio at: ${colors.blue('https://studio.zenstack.dev')}`); }); + server.on('error', (err: NodeJS.ErrnoException) => { + if (err.code === 'EADDRINUSE') { + console.error( + colors.red(`Port ${options.port} is already in use. Please choose a different port using -p option.`), + ); + } else { + throw new CliError(`Failed to start the server: ${err.message}`); + } + process.exit(1); + }); + // Graceful shutdown process.on('SIGTERM', async () => { server.close(() => { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 82d0e736..e3896606 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -196,7 +196,7 @@ Arguments following -- are passed to the seed script. E.g.: "zen db seed -- --us .alias('studio') .description('Start the ZenStack proxy server') .addOption(schemaOption) - .addOption(new Option('-p, --port ', 'port to run the proxy server on').default(8008)) + .addOption(new Option('-p, --port ', 'port to run the proxy server on').default(2311)) .addOption(new Option('-o, --output ', 'output directory for `zen generate` command')) .addOption(new Option('-d, --databaseUrl ', 'database connection URL')) .addOption(new Option('-l, --logLevel ', 'Query log levels (e.g., query, error)'))