Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: port in use #6887

Merged
merged 7 commits into from
Nov 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 35 additions & 22 deletions src/commands/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,30 +37,43 @@ import { createStatusCommand } from './status/index.js'
import { createSwitchCommand } from './switch/index.js'
import { createUnlinkCommand } from './unlink/index.js'
import { createWatchCommand } from './watch/index.js'

import { AddressInUseError } from './types.js'
const SUGGESTION_TIMEOUT = 1e4

process.on('uncaughtException', async (err) => {
console.log('')
error(
`${chalk.red(
'Netlify CLI has terminated unexpectedly',
)}\nThis is a problem with the Netlify CLI, not with your application.\nIf you recently updated the CLI, consider reverting to an older version by running:\n\n${chalk.bold(
'npm install -g netlify-cli@VERSION',
)}\n\nYou can use any version from ${chalk.underline(
'https://ntl.fyi/cli-versions',
)}.\n\nPlease report this problem at ${chalk.underline(
'https://ntl.fyi/cli-error',
)} including the error details below.\n`,
{ exit: false },
)

const systemInfo = await getSystemInfo()

console.log(chalk.dim(err.stack || err))
console.log(chalk.dim(systemInfo))

reportError(err, { severity: 'error' })
process.on('uncaughtException', async (err: AddressInUseError | Error) => {
if ('code' in err && err.code === 'EADDRINUSE') {
error(
`${chalk.red(`Port ${err.port} is already in use`)}\n\n` +
`Your serverless functions might be initializing a server\n` +
`to listen on specific port without properly closing it.\n\n` +
`This behavior is generally not advised\n` +
`To resolve this issue, try the following:\n` +
`1. If you NEED your serverless function to listen on a specific port,\n` +
`use a randomly assigned port as we do not officially support this.\n` +
`2. Review your serverless functions for lingering server connections, close them\n` +
`3. Check if any other applications are using port ${err.port}\n`,
{ exit: false },
)
} else {
error(
`${chalk.red(
'Netlify CLI has terminated unexpectedly',
)}\nThis is a problem with the Netlify CLI, not with your application.\nIf you recently updated the CLI, consider reverting to an older version by running:\n\n${chalk.bold(
'npm install -g netlify-cli@VERSION',
)}\n\nYou can use any version from ${chalk.underline(
'https://ntl.fyi/cli-versions',
)}.\n\nPlease report this problem at ${chalk.underline(
'https://ntl.fyi/cli-error',
)} including the error details below.\n`,
{ exit: false },
)

const systemInfo = await getSystemInfo()

console.log(chalk.dim(err.stack || err))
console.log(chalk.dim(systemInfo))
reportError(err, { severity: 'error' })
}

process.exit(1)
})
Expand Down
8 changes: 8 additions & 0 deletions src/commands/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,11 @@ export type NetlifyOptions = {
state: StateConfig
frameworksAPIPaths: FrameworksAPIPaths
}

export interface AddressInUseError extends Error {
wconrad265 marked this conversation as resolved.
Show resolved Hide resolved
code: 'EADDRINUSE'
errno: number
syscall: 'listen'
address: string
port: number
}
Loading