diff options
author | 2021-08-26 22:40:22 -0700 | |
---|---|---|
committer | 2021-08-26 22:40:22 -0700 | |
commit | ec334111c94bc3935617f2aca89bd05ed37d1b84 (patch) | |
tree | 1502efbfb12d696e5418599ab586a9436980e9df | |
parent | 92229ac0f69b61ba008f222d9ac9728bbf03ada9 (diff) | |
download | bun-ec334111c94bc3935617f2aca89bd05ed37d1b84.tar.gz bun-ec334111c94bc3935617f2aca89bd05ed37d1b84.tar.zst bun-ec334111c94bc3935617f2aca89bd05ed37d1b84.zip |
better errors
Former-commit-id: a16d16ac2d649b3678d3baaa7a4641c7a56f5d6d
-rw-r--r-- | src/cli.zig | 13 | ||||
-rw-r--r-- | src/http.zig | 6 | ||||
-rw-r--r-- | src/resolver/resolver.zig | 43 |
3 files changed, 56 insertions, 6 deletions
diff --git a/src/cli.zig b/src/cli.zig index 1937071d7..9e0574746 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -46,7 +46,18 @@ pub const Cli = struct { var panicker = MainPanicHandler.init(log); MainPanicHandler.Singleton = &panicker; - try Command.start(allocator, log); + Command.start(allocator, log) catch |err| { + switch (err) { + error.MissingEntryPoint => { + Output.prettyErrorln("<r><red>MissingEntryPoint<r> what do you want to bundle?\n\n<d>Example:\n\n<r> <b><cyan>bun bun --use next<r>\n\n <b><cyan>bun bun ./src/index.ts ./src/file2.ts<r>\n", .{}); + Output.flush(); + std.os.exit(1); + }, + else => { + return err; + }, + } + }; } }; diff --git a/src/http.zig b/src/http.zig index aca0edc88..85df74030 100644 --- a/src/http.zig +++ b/src/http.zig @@ -272,7 +272,11 @@ pub const RequestContext = struct { 200...299 => "YAY", 304 => "NOT MODIFIED", 300...303, 305...399 => "REDIRECT", - 400...499 => "bad request :'(", + 404 => "Not Found!", + 403 => "Not Allowed!", + 401 => "Login", + 402 => "Pay Me", + 400, 405...499 => "bad request :(", 500...599 => "ERR", else => @compileError("Invalid code passed to printStatusLine"), }; diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig index c6daad16e..2203ac138 100644 --- a/src/resolver/resolver.zig +++ b/src/resolver/resolver.zig @@ -412,15 +412,38 @@ pub fn NewResolver(cache_files: bool) type { var prefixed_package_buf: [512]u8 = undefined; // Prevent the extra lookup if the package is already prefixed, i.e. avoid "bun-framework-next-bun-framework-next" if (strings.startsWith(package, bunFrameworkPackagePrefix) or package.len + bunFrameworkPackagePrefix.len >= prefixed_package_buf.len) { - return try r._resolveFramework(package, pair, preference, load_defines); + return r._resolveFramework(package, pair, preference, load_defines) catch |err| { + switch (err) { + error.ModuleNotFound => { + Output.prettyErrorln("<r><red>ResolveError<r> can't find framework: <b>\"{s}\"<r>.\n\nMaybe it's not installed? Try running this:\n\n <b>npm install -D {s}<r>\n <b>bun bun --use {s}<r>", .{ package, package, package }); + Output.flush(); + std.os.exit(1); + }, + else => { + return err; + }, + } + }; } prefixed_package_buf[0..bunFrameworkPackagePrefix.len].* = bunFrameworkPackagePrefix.*; std.mem.copy(u8, prefixed_package_buf[bunFrameworkPackagePrefix.len..], package); - return r._resolveFramework(prefixed_package_buf[0 .. bunFrameworkPackagePrefix.len + package.len], pair, preference, load_defines) catch |err| { + const prefixed_name = prefixed_package_buf[0 .. bunFrameworkPackagePrefix.len + package.len]; + return r._resolveFramework(prefixed_name, pair, preference, load_defines) catch |err| { switch (err) { error.ModuleNotFound => { - return try r._resolveFramework(package, pair, preference, load_defines); + return r._resolveFramework(package, pair, preference, load_defines) catch |err2| { + switch (err2) { + error.ModuleNotFound => { + Output.prettyErrorln("<r><red>ResolveError<r> can't find framework: <b>\"{s}\"<r>.\n\nMaybe it's not installed? Try running this:\n\n <b>npm install -D {s}\n <b>bun bun --use {s}<r>", .{ package, prefixed_name, package }); + Output.flush(); + std.os.exit(1); + }, + else => { + return err; + }, + } + }; }, else => { return err; @@ -429,7 +452,19 @@ pub fn NewResolver(cache_files: bool) type { }; } - return try r._resolveFramework(package, pair, preference, load_defines); + return r._resolveFramework(package, pair, preference, load_defines) catch |err| { + switch (err) { + error.ModuleNotFound => { + Output.prettyError("<r><red>ResolveError<r> can't find local framework: <b>\"{s}\"<r>.", .{package}); + + Output.flush(); + std.os.exit(1); + }, + else => { + return err; + }, + } + }; } fn _resolveFramework( |