aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-26 22:40:22 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-26 22:40:22 -0700
commitec334111c94bc3935617f2aca89bd05ed37d1b84 (patch)
tree1502efbfb12d696e5418599ab586a9436980e9df
parent92229ac0f69b61ba008f222d9ac9728bbf03ada9 (diff)
downloadbun-ec334111c94bc3935617f2aca89bd05ed37d1b84.tar.gz
bun-ec334111c94bc3935617f2aca89bd05ed37d1b84.tar.zst
bun-ec334111c94bc3935617f2aca89bd05ed37d1b84.zip
better errors
Former-commit-id: a16d16ac2d649b3678d3baaa7a4641c7a56f5d6d
-rw-r--r--src/cli.zig13
-rw-r--r--src/http.zig6
-rw-r--r--src/resolver/resolver.zig43
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(