From 1d613d3fd8cd55106e9bee8d3e2cd03125c7d278 Mon Sep 17 00:00:00 2001 From: Codepanther Date: Fri, 14 Oct 2022 19:29:35 +0400 Subject: [PATCH 1/4] feat(kit): Clearer error for requiring a module --- packages/kit/src/internal/cjs.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/internal/cjs.ts b/packages/kit/src/internal/cjs.ts index 8103c5ea37b..5ad60e7f374 100644 --- a/packages/kit/src/internal/cjs.ts +++ b/packages/kit/src/internal/cjs.ts @@ -118,10 +118,15 @@ export function requireModule (id: string, opts: RequireModuleOptions = {}) { clearRequireCache(resolvedPath) } - // Try to require - const requiredModule = _require(resolvedPath) + try { + // Try to require + const requiredModule = _require(resolvedPath) - return requiredModule + return requiredModule + } catch (error: unknown) { + console.error(`Error while requiring module \`${id.split('/').pop()}\`: ${error}`) + throw error + } } export function importModule (id: string, opts: RequireModuleOptions = {}) { From a472efae3e308d381f63dadbaf0e307709c8af81 Mon Sep 17 00:00:00 2001 From: Codepanther Date: Fri, 14 Oct 2022 20:14:16 +0400 Subject: [PATCH 2/4] fix (kit): Use relative to display failed module path --- packages/kit/src/internal/cjs.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kit/src/internal/cjs.ts b/packages/kit/src/internal/cjs.ts index 5ad60e7f374..d19386e722a 100644 --- a/packages/kit/src/internal/cjs.ts +++ b/packages/kit/src/internal/cjs.ts @@ -1,3 +1,4 @@ +import { relative } from 'node:path' import { pathToFileURL } from 'node:url' import { join, normalize } from 'pathe' import { interopDefault } from 'mlly' @@ -124,7 +125,7 @@ export function requireModule (id: string, opts: RequireModuleOptions = {}) { return requiredModule } catch (error: unknown) { - console.error(`Error while requiring module \`${id.split('/').pop()}\`: ${error}`) + console.error(`Error while requiring module \`${relative(process.cwd(), resolvedPath)}\`: ${error}`) throw error } } From 6efdf4e9e3964c641c99374cd6958206638e078c Mon Sep 17 00:00:00 2001 From: Codepanther Date: Fri, 14 Oct 2022 20:22:28 +0400 Subject: [PATCH 3/4] fix (kit): Move try-catch to install.ts --- packages/kit/src/internal/cjs.ts | 12 +++--------- packages/kit/src/module/install.ts | 9 ++++++++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/kit/src/internal/cjs.ts b/packages/kit/src/internal/cjs.ts index d19386e722a..8103c5ea37b 100644 --- a/packages/kit/src/internal/cjs.ts +++ b/packages/kit/src/internal/cjs.ts @@ -1,4 +1,3 @@ -import { relative } from 'node:path' import { pathToFileURL } from 'node:url' import { join, normalize } from 'pathe' import { interopDefault } from 'mlly' @@ -119,15 +118,10 @@ export function requireModule (id: string, opts: RequireModuleOptions = {}) { clearRequireCache(resolvedPath) } - try { - // Try to require - const requiredModule = _require(resolvedPath) + // Try to require + const requiredModule = _require(resolvedPath) - return requiredModule - } catch (error: unknown) { - console.error(`Error while requiring module \`${relative(process.cwd(), resolvedPath)}\`: ${error}`) - throw error - } + return requiredModule } export function importModule (id: string, opts: RequireModuleOptions = {}) { diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index 638e5718a10..3e5cff8bda2 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -1,3 +1,4 @@ +import { relative } from 'node:path' import type { Nuxt, NuxtModule } from '@nuxt/schema' import { useNuxt } from '../context' import { resolveModule, requireModule, importModule } from '../internal/cjs' @@ -42,7 +43,13 @@ async function normalizeModule (nuxtModule: string | NuxtModule, inlineOptions?: const _src = resolveModule(resolveAlias(nuxtModule), { paths: nuxt.options.modulesDir }) // TODO: also check with type: 'module' in closest `package.json` const isESM = _src.endsWith('.mjs') - nuxtModule = isESM ? await importModule(_src) : requireModule(_src) + + try { + nuxtModule = isESM ? await importModule(_src) : requireModule(_src) + } catch (error: unknown) { + console.error(`Error while requiring module \`${nuxtModule}\`: ${error}`) + throw error + } } // Throw error if input is not a function From 3889b25b947c973ff6c20431a95a499fa4e90c55 Mon Sep 17 00:00:00 2001 From: Codepanther Date: Fri, 14 Oct 2022 20:24:04 +0400 Subject: [PATCH 4/4] fix (kit): Remove 'relative' import from node:path --- packages/kit/src/module/install.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index 3e5cff8bda2..e27492e49f1 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -1,4 +1,3 @@ -import { relative } from 'node:path' import type { Nuxt, NuxtModule } from '@nuxt/schema' import { useNuxt } from '../context' import { resolveModule, requireModule, importModule } from '../internal/cjs'