diff --git a/src/widget.tsx b/src/widget.tsx
index 2a74735..5407212 100644
--- a/src/widget.tsx
+++ b/src/widget.tsx
@@ -593,29 +593,21 @@ export class ReactModel extends DOMWidgetModel {
);
module = await importShim(this.codeUrl);
if (!module) {
- return () =>
error loading module
;
+ throw new Error(`Error loading module`);
}
} else {
module = await importShim(moduleName);
if (!module) {
- return () => no module found with name {moduleName}
;
+ throw new Error(`no module found with name ${moduleName}`);
}
}
let component = module[type || "default"];
if (!component) {
if (type) {
- return () => (
-
- no component found in module {moduleName} (with name {type})
-
- );
+ throw new Error(`no component ${type} found in module ${moduleName}`);
} else {
- return () => (
-
- no component found in module {moduleName} (it should be exported
- as default)
-
- );
+ throw new Error(`
+ no component found in module ${moduleName} (it should be exported as default)`);
}
} else {
if (this.compiledCode) {
diff --git a/tests/ui/basics_test.py b/tests/ui/basics_test.py
index 8054a08..657cf2e 100644
--- a/tests/ui/basics_test.py
+++ b/tests/ui/basics_test.py
@@ -82,3 +82,34 @@ def test_update_props_after_create(solara_test, page_session: playwright.sync_ap
display(b)
page_session.locator(".test-button-updated >> text=Button").wait_for()
+
+
+def test_error_module(solara_test, page_session: playwright.sync_api.Page):
+ b = ipyreact.Widget(
+ _type="Foo",
+ _module="bar",
+ children=["should not be shown"],
+ )
+ display(b)
+ page_session.locator("text=Unable to resolve specifier").wait_for()
+
+
+def test_error_type(solara_test, page_session: playwright.sync_api.Page):
+ ipyreact.define_module(
+ "my-module",
+ """
+ import * as React from "react";
+
+ export function ClickButton({value, setValue}) {
+ return React.createElement("button", {
+ className: "counter-widget",
+ onClick: () => setValue(value + 1),
+ children: [`${value|| 0} clicks`],
+ })
+ };
+ """,
+ )
+
+ b = ipyreact.ValueWidget(_module="my-module", _type="ClickButtonMistyped")
+ display(b)
+ page_session.locator("text=no component ClickButtonMistyped found in module my-module").wait_for()