Skip to content

Commit 09f6b48

Browse files
committed
fix: improve error handling. closes #336
1 parent ff25f9a commit 09f6b48

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

packages/create-react-native-library/src/index.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,4 +747,22 @@ yargs
747747
.command('$0 <name>', 'create a react native library', args, create)
748748
.demandCommand()
749749
.recommendCommands()
750+
.fail((message, error) => {
751+
console.log('\n');
752+
753+
if (error) {
754+
console.log(kleur.red(error.message));
755+
throw error;
756+
}
757+
758+
if (message) {
759+
console.log(kleur.red(message));
760+
} else {
761+
console.log(
762+
kleur.red(`An unknown error occurred. See '--help' for usage guide.`)
763+
);
764+
}
765+
766+
process.exit(1);
767+
})
750768
.strict().argv;

packages/create-react-native-library/src/utils/generateExampleApp.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,26 @@ export default async function generateExampleApp({
5656
: // `npx create-expo-app example --no-install`
5757
['create-expo-app@latest', directory, '--no-install'];
5858

59-
const child = spawn('npx', args, {
60-
cwd: dest,
61-
env: { ...process.env, npm_config_yes: 'true' },
62-
});
63-
6459
await new Promise((resolve, reject) => {
60+
const child = spawn('npx', args, {
61+
cwd: dest,
62+
env: { ...process.env, npm_config_yes: 'true' },
63+
});
64+
65+
let stderr = '';
66+
67+
child.stderr?.setEncoding('utf8');
68+
child.stderr?.on('data', (data) => {
69+
stderr += data;
70+
});
71+
6572
child.once('error', reject);
6673
child.once('close', resolve);
74+
child.once('exit', (code) => {
75+
if (code === 1) {
76+
reject(new Error(stderr));
77+
}
78+
});
6779
});
6880

6981
// Remove unnecessary files and folders

0 commit comments

Comments
 (0)