From d8f2821ff38749026c9bd42a1b873cb5ddb41484 Mon Sep 17 00:00:00 2001 From: Ashutosh-Bhadauriya Date: Tue, 25 Jul 2023 18:46:42 +0530 Subject: [PATCH 1/4] Feat: Detect nextjs project --- packages/cli/src/commands/dev.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/dev.ts b/packages/cli/src/commands/dev.ts index 56e3ebd1d92..6958eb1ba8a 100644 --- a/packages/cli/src/commands/dev.ts +++ b/packages/cli/src/commands/dev.ts @@ -9,6 +9,7 @@ import { logger } from "../utils/logger.js"; import { resolvePath } from "../utils/parseNameAndPath.js"; import { TriggerApi } from "../utils/triggerApi.js"; import dotenv from "dotenv"; +import fetch from 'node-fetch'; export const DevCommandOptionsSchema = z.object({ port: z.coerce.number(), @@ -48,7 +49,7 @@ export async function devCommand(path: string, anyOptions: any) { logger.success(`✔️ [trigger.dev] Detected TriggerClient id: ${endpointId}`); // Read from .env.local or .env to get the TRIGGER_API_KEY and TRIGGER_API_URL - const { apiUrl, envFile } = await getTriggerApiDetails( + const { apiUrl, envFile, apiKey } = await getTriggerApiDetails( resolvedPath, options.envFile ); @@ -64,6 +65,20 @@ export async function devCommand(path: string, anyOptions: any) { const endpointHandlerUrl = `${endpointUrl}${options.handlerPath}`; + const response = await fetch(endpointHandlerUrl, { + method: "HEAD", + headers: { + "x-trigger-api-key": apiKey, + "x-trigger-action": "PING", + "x-trigger-endpoint-id": endpointId, + }, + }); + + if (!response.ok) { + logger.error(`❌ [trigger.dev] No server found on port ${options.port}. Status Code: ${response.status}, Status Text: ${response.statusText}`); + process.exit(1); + } + const connectingSpinner = ora( `[trigger.dev] Registering endpoint ${endpointHandlerUrl}...` ); From fe6913e29069bf52a613c7e9d9a7bf8ff4509991 Mon Sep 17 00:00:00 2001 From: Ashutosh-Bhadauriya Date: Tue, 25 Jul 2023 19:00:49 +0530 Subject: [PATCH 2/4] Add check before opening tunnel --- packages/cli/src/commands/dev.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/commands/dev.ts b/packages/cli/src/commands/dev.ts index 6958eb1ba8a..db8846aef0e 100644 --- a/packages/cli/src/commands/dev.ts +++ b/packages/cli/src/commands/dev.ts @@ -60,12 +60,9 @@ export async function devCommand(path: string, anyOptions: any) { ` [trigger.dev] Looking for Next.js site on port ${options.port}` ); - // Setup tunnel - const endpointUrl = await resolveEndpointUrl(apiUrl, options.port); - - const endpointHandlerUrl = `${endpointUrl}${options.handlerPath}`; + const localEndpointHandlerUrl = `http://localhost:${options.port}${options.handlerPath}`; - const response = await fetch(endpointHandlerUrl, { + const response = await fetch(localEndpointHandlerUrl, { method: "HEAD", headers: { "x-trigger-api-key": apiKey, @@ -79,6 +76,10 @@ export async function devCommand(path: string, anyOptions: any) { process.exit(1); } + // Setup tunnel + const endpointUrl = await resolveEndpointUrl(apiUrl, options.port); + const endpointHandlerUrl = `${endpointUrl}${options.handlerPath}`; + const connectingSpinner = ora( `[trigger.dev] Registering endpoint ${endpointHandlerUrl}...` ); From 2c38436a0373803064937f9ca27c98b98af5a13f Mon Sep 17 00:00:00 2001 From: Ashutosh-Bhadauriya Date: Wed, 26 Jul 2023 17:39:08 +0530 Subject: [PATCH 3/4] Update dev.ts --- packages/cli/src/commands/dev.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/cli/src/commands/dev.ts b/packages/cli/src/commands/dev.ts index db8846aef0e..bb0ac43cd25 100644 --- a/packages/cli/src/commands/dev.ts +++ b/packages/cli/src/commands/dev.ts @@ -9,7 +9,7 @@ import { logger } from "../utils/logger.js"; import { resolvePath } from "../utils/parseNameAndPath.js"; import { TriggerApi } from "../utils/triggerApi.js"; import dotenv from "dotenv"; -import fetch from 'node-fetch'; +import fetch from "node-fetch"; export const DevCommandOptionsSchema = z.object({ port: z.coerce.number(), @@ -62,17 +62,17 @@ export async function devCommand(path: string, anyOptions: any) { const localEndpointHandlerUrl = `http://localhost:${options.port}${options.handlerPath}`; - const response = await fetch(localEndpointHandlerUrl, { - method: "HEAD", - headers: { - "x-trigger-api-key": apiKey, - "x-trigger-action": "PING", - "x-trigger-endpoint-id": endpointId, - }, - }); - - if (!response.ok) { - logger.error(`❌ [trigger.dev] No server found on port ${options.port}. Status Code: ${response.status}, Status Text: ${response.statusText}`); + try { + await fetch(localEndpointHandlerUrl, { + method: "HEAD", + headers: { + "x-trigger-api-key": apiKey, + "x-trigger-action": "PING", + "x-trigger-endpoint-id": endpointId, + }, + }); + } catch (err) { + logger.error(`❌ [trigger.dev] No server found on port ${options.port}.`); process.exit(1); } From f006d67b014178b4d5b1cf29243ad01fe92764be Mon Sep 17 00:00:00 2001 From: Ashutosh-Bhadauriya Date: Thu, 27 Jul 2023 09:46:37 +0530 Subject: [PATCH 4/4] Add changeset --- .changeset/blue-monkeys-speak.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/blue-monkeys-speak.md diff --git a/.changeset/blue-monkeys-speak.md b/.changeset/blue-monkeys-speak.md new file mode 100644 index 00000000000..41e0de0b79d --- /dev/null +++ b/.changeset/blue-monkeys-speak.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/cli": patch +--- + +Detect if a nextjs project is running on the specified port before opening tunnel