From 24cff10b8ef82719cbedba9c2e919e58ceece073 Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Mon, 26 Jun 2023 10:27:58 +0200 Subject: [PATCH 1/4] feat(medusa): Improve error messaging in plugin loader --- packages/medusa/src/loaders/plugins.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/medusa/src/loaders/plugins.ts b/packages/medusa/src/loaders/plugins.ts index 52fcdbd9bbb9f..09d3ab8ca3542 100644 --- a/packages/medusa/src/loaders/plugins.ts +++ b/packages/medusa/src/loaders/plugins.ts @@ -336,12 +336,21 @@ function registerApi( } return app } catch (err) { - if (err.message !== `Cannot find module '${pluginDetails.resolve}/api'`) { - logger.progress( - activityId, - `No customer endpoints registered for ${pluginDetails.name}` + if (err.code !== "MODULE_NOT_FOUND") { + const projectName = + pluginDetails.name === "project-plugin" + ? "your Medusa project" + : `${pluginDetails.name}` + + logger.warn( + `An error occured while registering endpoints in ${projectName}` ) + + if (err.stack) { + logger.warn(`${err.stack}`) + } } + return app } } From 2fe5a303c375418805e756774c2c1314976f87d6 Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:31:00 +0200 Subject: [PATCH 2/4] Create fair-kids-tease.md --- .changeset/fair-kids-tease.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fair-kids-tease.md diff --git a/.changeset/fair-kids-tease.md b/.changeset/fair-kids-tease.md new file mode 100644 index 0000000000000..b28eb529279c3 --- /dev/null +++ b/.changeset/fair-kids-tease.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +feat(medusa): Improve error messaging in plugin loader From 92af2baa59367a6135fb1b950c98ae4281567092 Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Mon, 26 Jun 2023 10:40:06 +0200 Subject: [PATCH 3/4] pr comments --- packages/medusa/src/loaders/plugins.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/medusa/src/loaders/plugins.ts b/packages/medusa/src/loaders/plugins.ts index 09d3ab8ca3542..f004d883f3dee 100644 --- a/packages/medusa/src/loaders/plugins.ts +++ b/packages/medusa/src/loaders/plugins.ts @@ -325,10 +325,12 @@ function registerApi( activityId: string ): Express { const logger = container.resolve("logger") - logger.progress( - activityId, - `Registering custom endpoints for ${pluginDetails.name}` - ) + const projectName = + pluginDetails.name === "project-plugin" + ? "your Medusa project" + : `${pluginDetails.name}` + + logger.progress(activityId, `Registering custom endpoints for ${projectName}`) try { const routes = require(`${pluginDetails.resolve}/api`).default if (routes) { @@ -337,11 +339,6 @@ function registerApi( return app } catch (err) { if (err.code !== "MODULE_NOT_FOUND") { - const projectName = - pluginDetails.name === "project-plugin" - ? "your Medusa project" - : `${pluginDetails.name}` - logger.warn( `An error occured while registering endpoints in ${projectName}` ) From fde9cd24802207723e200185a6322284a8635c1a Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Mon, 26 Jun 2023 10:52:49 +0200 Subject: [PATCH 4/4] pr comments --- packages/medusa/src/commands/utils/get-migrations.js | 6 ++++-- packages/medusa/src/loaders/__tests__/plugins.spec.ts | 8 ++++---- packages/medusa/src/loaders/plugins.ts | 9 ++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/medusa/src/commands/utils/get-migrations.js b/packages/medusa/src/commands/utils/get-migrations.js index 38daf0ac52d08..c4dc61e219d17 100644 --- a/packages/medusa/src/commands/utils/get-migrations.js +++ b/packages/medusa/src/commands/utils/get-migrations.js @@ -10,6 +10,7 @@ import { } from "medusa-core-utils" import path from "path" import { handleConfigError } from "../../loaders/config" +import { MEDUSA_PROJECT_NAME } from "../../loaders/plugins" function createFileContentHash(path, files) { return path + files @@ -143,10 +144,11 @@ export default (directory, featureFlagRouter) => { return details }) + // Resolve user's project as a plugin for loading purposes resolved.push({ resolve: `${directory}/dist`, - name: `project-plugin`, - id: createPluginId(`project-plugin`), + name: MEDUSA_PROJECT_NAME, + id: createPluginId(MEDUSA_PROJECT_NAME), options: {}, version: createFileContentHash(process.cwd(), `**`), }) diff --git a/packages/medusa/src/loaders/__tests__/plugins.spec.ts b/packages/medusa/src/loaders/__tests__/plugins.spec.ts index 06bc62d48a146..9ae20ab702419 100644 --- a/packages/medusa/src/loaders/__tests__/plugins.spec.ts +++ b/packages/medusa/src/loaders/__tests__/plugins.spec.ts @@ -5,11 +5,11 @@ import { Resolver, } from "awilix" import { mkdirSync, rmSync, writeFileSync } from "fs" +import { createMedusaContainer } from "medusa-core-utils" import { resolve } from "path" -import Logger from "../logger" -import { registerServices, registerStrategies } from "../plugins" import { DataSource, EntityManager } from "typeorm" -import { createMedusaContainer } from "medusa-core-utils" +import Logger from "../logger" +import { MEDUSA_PROJECT_NAME, registerServices, registerStrategies } from "../plugins" // ***** TEMPLATES ***** const buildServiceTemplate = (name: string): string => { @@ -116,7 +116,7 @@ describe("plugins loader", () => { const pluginsDetails = { resolve: resolve(__dirname, "__pluginsLoaderTest__"), - name: `project-plugin`, + name: MEDUSA_PROJECT_NAME, id: "fakeId", options: {}, version: '"fakeVersion', diff --git a/packages/medusa/src/loaders/plugins.ts b/packages/medusa/src/loaders/plugins.ts index f004d883f3dee..6e4960db721e5 100644 --- a/packages/medusa/src/loaders/plugins.ts +++ b/packages/medusa/src/loaders/plugins.ts @@ -55,6 +55,8 @@ type PluginDetails = { export const isSearchEngineInstalledResolutionKey = "isSearchEngineInstalled" +export const MEDUSA_PROJECT_NAME = "project-plugin" + /** * Registers all services in the services directory */ @@ -108,10 +110,11 @@ function getResolvedPlugins( return details }) + // Resolve user's project as a plugin for loading purposes resolved.push({ resolve: `${rootDirectory}/dist`, - name: `project-plugin`, - id: createPluginId(`project-plugin`), + name: MEDUSA_PROJECT_NAME, + id: createPluginId(MEDUSA_PROJECT_NAME), options: configModule, version: createFileContentHash(process.cwd(), `**`), }) @@ -326,7 +329,7 @@ function registerApi( ): Express { const logger = container.resolve("logger") const projectName = - pluginDetails.name === "project-plugin" + pluginDetails.name === MEDUSA_PROJECT_NAME ? "your Medusa project" : `${pluginDetails.name}`