(hostname: string, port: number, spinner: Ora)
| 566 | } |
| 567 | |
| 568 | async function createNgrokTunnel(hostname: string, port: number, spinner: Ora) { |
| 569 | try { |
| 570 | return await ngrok.connect({ addr: `${hostname}:${port}` }); |
| 571 | } catch (error: any) { |
| 572 | if ( |
| 573 | typeof error.message === "string" && |
| 574 | error.message.includes("`version` property is required") |
| 575 | ) { |
| 576 | await upgradeNgrokConfig(spinner); |
| 577 | |
| 578 | try { |
| 579 | return await ngrok.connect(port); |
| 580 | } catch (retryError) { |
| 581 | spinner.fail( |
| 582 | `Ngrok failed to create a tunnel for port ${port} after configuration upgrade.\n${retryError}` |
| 583 | ); |
| 584 | return; |
| 585 | } |
| 586 | } |
| 587 | if ( |
| 588 | typeof error.message === "string" && |
| 589 | error.message.includes("connect ECONNREFUSED 127.0.0.1:4041") |
| 590 | ) { |
| 591 | spinner.fail( |
| 592 | `Ngrok failed to create a tunnel for port ${port} because ngrok is already running.\n You may want to use -t flag to use an existing URL that points to the local dev server.` |
| 593 | ); |
| 594 | return; |
| 595 | } |
| 596 | spinner.fail(`Ngrok failed to create a tunnel for port ${port}.\n${error.message}`); |
| 597 | return; |
| 598 | } |
| 599 | } |
| 600 | |
| 601 | async function upgradeNgrokConfig(spinner: Ora) { |
| 602 | try { |
no test coverage detected
searching dependent graphs…