Errors ¶
Whenever Fusion outputs any errors or messages to the console, it will have a short error ID at the end. This is used to uniquely identify what kind of error or message you're seeing.
Use the search box below to paste in or type an error ID, and it will scroll to the details for you.
callbackError¶
Error in callback: attempt to perform arithmetic (add) on number and string
Thrown by:
Computed
,
ForKeys
,
ForValues
,
ForPairs
,
Contextual
Fusion ran a function you specified, but the function threw an error that Fusion couldn't handle.
The error includes a more specific message which can be used to diagnose the issue.
cannotAssignProperty¶
The class type 'Foo' has no assignable property 'Bar'.
You tried to set a property on an instance, but the property can't be assigned to for some reason. This could be because the property doesn't exist, or because it's locked by Roblox to prevent edits.
Check your privileges
Different scripts may have different privileges - for example, plugins will be allowed more privileges than in-game scripts. Make sure you have the necessary privileges to assign to your properties!
cannotConnectChange¶
The Frame class doesn't have a property called 'Foo'.
Thrown by:
OnChange
You tried to connect to a property change event, but the property you specify doesn't exist on the instance.
cannotConnectEvent¶
The Frame class doesn't have an event called 'Foo'.
Thrown by:
OnEvent
You tried to connect to an event on an instance, but the event you specify doesn't exist on the instance.
cannotCreateClass¶
Can't create a new instance of class 'EditableImage'.
Thrown by:
New
You attempted to create a type of instance that Fusion can't create.
Beta features
Some instances are only creatable when you have certain Studio betas enabled. Check your Beta Features tab to ensure that beta features aren't causing the issue.
cannotDepend¶
Observer can't depend on Observer.
Thrown by:
Observer
You attempted to form a dependency between two graph objects, but either the dependency set or dependent set were frozen.
You might be trying to connect them in the wrong order, or the objects might not be designed to have dependents or dependencies.
cleanupWasRenamed¶
`Fusion.cleanup` was renamed to `Fusion.doCleanup`. This will be an error in
future versions of Fusion.
Thrown by:
doCleanup
You attempted to use cleanup()
in Fusion 0.3, which replaces it with the
doCleanup()
method.
destroyedTwice¶
`doCleanup()` was given something that it is already cleaning up. Unclear how to
proceed.
Thrown by:
doCleanup
You called doCleanup()
on a function or object which carried some code. When
that code was run, it attempted to call doCleanup()
on the same thing you
called with.
Usually, this would result in an infinite loop, because the same code would try to clean itself up over and over again. Because cleanup tasks are only meant to run once, this is invalid behaviour and so this error is thrown instead.
Ensure your code is the rightful owner of scopes that it is trying to clean up. In particular, avoid cleaning up scopes you receive from elsewhere, unless you and the original provider of the scope agree to transfer the responsibility of cleaning up the scope.
destructorRedundant¶
Computed destructors no longer do anything. If you wish to run code on destroy,
`table.insert` a function into the `scope` argument. See discussion #292 on
GitHub for advice.
Thrown by:
Computed
,
ForKeys
,
ForValues
,
ForPairs
Related discussions:
#292
You passed an extra parameter to the constructor, which has historically been interpreted as a function that runs when a value is cleaned up.
This mechanism has been replaced by scopes.
forKeyCollision¶
The key '6' was returned multiple times simultaneously, which is not allowed in
`For` objects.
When called with different items from the table, the same key was returned for both of them. This is not allowed, because keys have to be unique in a table.
invalidAttributeChangeHandler¶
The change handler for the 'Active' attribute must be a function.
Thrown by:
AttributeChange
AttributeChange
expected you to provide a function for it to run when the
attribute changes, but you provided something other than a function.
For example, you might have accidentally provided nil
.
invalidAttributeOutType¶
[AttributeOut] properties must be given Value objects.
Thrown by:
AttributeOut
AttributeOut
expected you to give it a value, but
you gave it something else.
invalidChangeHandler¶
The change handler for the 'AbsoluteSize' property must be a function.
Thrown by:
OnChange
OnChange
expected you to provide a function for it to run when the property
changes, but you provided something other than a function.
For example, you might have accidentally provided nil
.
invalidEventHandler¶
The handler for the 'MouseEnter' event must be a function.
Thrown by:
OnEvent
OnEvent
expected you to provide a function for it to run when the event is
fired, but you provided something other than a function.
For example, you might have accidentally provided nil
.
invalidOutProperty¶
The Frame class doesn't have a property called 'MouseButton1Down'.
Thrown by:
Out
The property that you tried to output doesn't exist on the instance that Out
was used with.
invalidOutType¶
[Out] properties must be given Value objects.
Thrown by:
Out
Out
expected you to give it a value, but you gave
it something else.
invalidPropertyType¶
'Frame.BackgroundColor3' expected a 'Color3' type, but got a 'Vector3' type.
You attempted to assign a value to a Roblox instance's property, but the assignment threw an error because that property doesn't accept values of that type.
invalidRefType¶
Instance refs must be Value objects.
Thrown by:
Ref
Ref
expected you to give it a value, but you gave
it something else.
invalidSpringDamping¶
The damping ratio for a spring must be >= 0. (damping was -1.00)
Thrown by:
Spring
You provided a damping ratio that the spring doesn't support, for example NaN
,
or a negative damping implying negative friction.
invalidSpringSpeed¶
The speed of a spring must be >= 0. (speed was NaN)
Thrown by:
Spring
You provided a speed multiplier that the spring doesn't support, for example
NaN
or a negative speed implying the spring moves backwards through time.
mergeConflict¶
Multiple definitions for 'Observer' found while merging.
Thrown by:
scoped
Fusion tried to merge together multiple tables, but a key was found in more than one of the tables, and it's unclear which one you intended to have in the final merged result.
This can happen subtly with methods such as
scoped()
which automatically merge together all
of their arguments.
mistypedSpringDamping¶
The damping ratio for a spring must be a number. (got a string)
Thrown by:
Spring
You provided a damping ratio that the spring couldn't understand. Damping ratio has to be a number.
mistypedSpringSpeed¶
The speed of a spring must be a number. (got a string)
Thrown by:
Spring
You provided a speed multiplier that the spring couldn't understand. Speed has to be a number.
mistypedTweenInfo¶
The tween info of a tween must be a TweenInfo. (got a table)
Thrown by:
Tween
You provided an easing curve that the tween couldn't understand. The easing
curve has to be specified using Roblox's TweenInfo
data type.
noTaskScheduler¶
Fusion is not connected to an external task scheduler.
Fusion depends on a task scheduler being present to perform certain time-related tasks such as deferral, delays, or updating animations. You'll need to define a set of standard task scheduler functions that Fusion can use for those purposes.
Roblox users should never see this error, as Fusion automatically connects to Roblox's task scheduling APIs.
poisonedScope¶
Attempted to use a scope after it's been destroyed; `doCleanup()` was previously
called on this scope. Ensure you are not reusing scopes after cleanup.
Thrown by:
scopes after being passed to doCleanup
If you attempt to read from, or write to, a scope that's been destroyed, this message is shown. After a scope has been cleaned up, your code should forget the reference to it, as it is no longer valid.
possiblyOutlives¶
The Computed (bound to the PaddingLeft property) will be destroyed before the
UIPadding instance; the latter is in a different scope that gets destroyed too
quickly. To fix this, review the order they're created in, and what scopes they
belong to. See discussion #292 on GitHub for advice.
Thrown by:
Spring
,
Tween
,
New
,
Hydrate
,
Attribute
,
AttributeOut
,
Out
,
Ref
,
Computed
,
Observer
Related discussions:
#292
If you use an object after it's been destroyed, then your code can break. This mainly happens when one object 'outlives' another object that it's using.
Because scopes clean up the newest objects first, this can happen when an old object depends on something much newer that itself. During cleanup, a situation could arise where the newer object is destroyed, then the older object runs code of some kind that needed the newer object to be there.
Fusion can check for situations like this by analysing the scopes. This message is shown when Fusion can prove one of these situations will occur.
There are two typical solutions:
- If the objects should always be created and destroyed at the exact same time, then ensure they're created in the correct order.
- Otherwise, move the objects into separate scopes, and ensure that both scopes can exist without the other scope.
propertySetError¶
Error setting property: UIAspectRatioConstraint.AspectRatio set to a
non-positive value. Value must be a positive.
You attempted to set a property, but Roblox threw an error in response.
The error includes a more specific message which can be used to diagnose the issue.
scopeMissing¶
To create Observers, provide a scope. (e.g. `myScope:Observer(watching)`). See
discussion #292 on GitHub for advice.
Thrown by:
New
,
Hydrate
,
Value
,
Computed
,
Observer
,
ForKeys
,
ForValues
,
ForPairs
,
Spring
,
Tween
Related discussions:
#292
You attempted to create an object without providing a scope as the first parameter.
Scopes are mandatory for all Fusion constructors so that Fusion knows when the object should be destroyed.
springNanGoal¶
A spring was given a NaN goal, so some simulation has been skipped. Ensure no
springs have NaN goals.
Thrown by:
Spring
The goal parameter given to the spring during construction contained one or more NaN values.
This typically occurs when zero is accidentally divided by zero, or some other invalid mathematical operation has occurred. Check that your code is free of maths errors, and handles all edge cases.
springNanMotion¶
A spring encountered NaN during motion, so has snapped to the goal position.
Ensure no springs have NaN positions or velocities.
Thrown by:
Spring
While calculating updated position and velocity, one or both of those values ended up as NaN.
This typically occurs when zero is accidentally divided by zero, or some other invalid mathematical operation has occurred. Check that your code is free of maths errors, and handles all edge cases.
springTypeMismatch¶
The type 'Vector3' doesn't match the spring's type 'Color3'.
Thrown by:
Spring
The spring expected you to provide a type matching the data type that the spring is currently outputting. However, you provided a different data type.
stateGetWasRemoved¶
`StateObject:get()` has been replaced by `use()` and `peek()` - see discussion
#217 on GitHub.
Thrown by:
Value
,
Computed
,
ForKeys
,
ForValues
,
ForPairs
,
Spring
,
Tween
Related discussions:
#217
Older versions of Fusion let you call :get()
directly on state objects to read
their current value and attempt to infer dependencies.
This has been replaced by use functions in Fusion 0.3 for more predictable behaviour and better support for constant values.
tweenNanGoal¶
A tween was given a NaN goal, so some animation has been skipped. Ensure no
tweens have NaN goals.
Thrown by:
Tween
The goal parameter given to the tween during construction contained one or more NaN values.
This typically occurs when zero is accidentally divided by zero, or some other invalid mathematical operation has occurred. Check that your code is free of maths errors, and handles all edge cases.
tweenNanMotion¶
A tween encountered NaN during motion, so has snapped to the goal. Ensure no
tweens have NaN in their tween infos.
Thrown by:
Tween
While calculating an updated tween position, the final value contained one or more NaN values.
This typically occurs when zero is accidentally divided by zero, or some other invalid mathematical operation has occurred. Check that your code is free of maths errors, and handles all edge cases.
unknownMessage¶
Unknown error: attempt to call a nil value
Fusion ran into a problem, but couldn't associate it with a valid type of error. This is a fallback error type which shouldn't be seen by end users, because it indicates that Fusion code isn't reporting errors correctly.
unrecognisedChildType¶
'string' type children aren't accepted by `[Children]`.
Thrown by:
Children
You provided a value inside of [Children]
which didn't meet the definition of
a child value. Check that you're only passing
instances, arrays and state objects.
unrecognisedPropertyKey¶
'number' keys aren't accepted in property tables.
You provided something other than a property assignment (Property = Value
) or
special key in your property table.
Most commonly, this means you tried to add child instances directly into the
property table, rather than passing them into the
[Children]
special key.
unrecognisedPropertyStage¶
'children' isn't a valid stage for a special key to be applied at.
You attempted to use a special key which has a
misconfigured stage
, so Fusion didn't know when to apply it during instance
construction.
useAfterDestroy¶
The Value object is no longer valid - it was destroyed before the Computed that
is use()-ing. See discussion #292 on GitHub for advice.
Thrown by:
Spring
,
Tween
,
New
,
Hydrate
,
Attribute
,
AttributeOut
,
Out
,
Ref
,
Computed
,
Observer
Related discussions:
#292
Your code attempted to access an object after that object was destroyed..
Make sure your objects are being added to the correct scopes according to when you expect them to be destroyed. Additionally, make sure your code can detect and deal with situations where other objects are no longer available.