slint-ui/slint · error · napi::Error
Failed to create weak reference
Error message
Failed to create weak reference
What it means
Error "Failed to create weak reference" thrown in slint-ui/slint.
Source
Thrown at api/node/rust/weak_ref.rs:65
///
/// The reference doesn't prevent garbage collection.
/// If V8 collects the value,
/// [`get_unknown`](WeakValueRef::get_unknown) returns `None`.
pub struct WeakValueRef {
raw_ref: napi::sys::napi_ref,
raw_env: napi::sys::napi_env,
}
impl WeakValueRef {
/// Create a weak reference to any JS value.
pub fn new<'a, T: JsValue<'a>>(env: &Env, value: &T) -> Result<Self> {
let raw_env = env.raw();
let raw_val = value.raw();
let mut raw_ref = std::ptr::null_mut();
// Safety: raw_env and raw_val are valid handles from napi-rs.
let status = unsafe { napi::sys::napi_create_reference(raw_env, raw_val, 0, &mut raw_ref) };
if status != napi::sys::Status::napi_ok {
return Err(napi::Error::new(
napi::Status::from(status),
"Failed to create weak reference",
));
}
Ok(Self { raw_ref, raw_env })
}
/// Get the value back,
/// or `None` if it was garbage-collected.
pub fn get_unknown(&self) -> Option<Unknown<'_>> {
let mut value = std::ptr::null_mut();
// Safety: raw_env and raw_ref are valid (created in new, deleted in drop).
let status =
unsafe { napi::sys::napi_get_reference_value(self.raw_env, self.raw_ref, &mut value) };
if status != napi::sys::Status::napi_ok || value.is_null() {
return None;
}
// Safety: value is a live JS handle from the reference.View on GitHub (pinned to 3fd8f2ec03)
Solutions
- Ensure the referenced object is still alive when creating the weak reference.
- Avoid creating weak references to already-garbage-collected values.
When it happens
Trigger: Thrown at api/node/rust/weak_ref.rs:65 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of slint-ui/slint@3fd8f2ec03 (2026-08-19).
Data as JSON: /api/errors/e9fcccb72233bd7f.
Report an issue: GitHub.