From ebe172e5ed15fcda9c5adad2a104eec6ca894800 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 1 Sep 2023 18:49:23 +0200 Subject: [PATCH] Merge pull request #24018 from storybookjs/yann/string-width-issue CLI: Add uncaughtException handler (cherry picked from commit a66b8b22455f6032f94a85f13aa9a39b763ba917) --- code/lib/cli/bin/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/code/lib/cli/bin/index.js b/code/lib/cli/bin/index.js index 812bff5291c2..7131e95a311d 100755 --- a/code/lib/cli/bin/index.js +++ b/code/lib/cli/bin/index.js @@ -6,4 +6,21 @@ if (majorNodeVersion < 16) { process.exit(1); } +// The Storybook CLI has a catch block for all of its commands, but if an error +// occurs before the command even runs, for instance, if an import fails, then +// such error will fall under the uncaughtException handler. +// This is the earliest moment we can catch such errors. +process.once('uncaughtException', (error) => { + if (error.message.includes('string-width')) { + console.error( + [ + '🔴 Error: It looks like you are having a known issue with package hoisting.', + 'Please check the following issue for details and solutions: https://github.com/storybookjs/storybook/issues/22431#issuecomment-1630086092\n\n', + ].join('\n') + ); + } + + throw error; +}); + require('../dist/generate.js');