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.
since v0.1
cannotAssignProperty¶
The class type 'Foo' has no assignable property 'Bar'.
This message means you tried to set a property on an instance, but the property can't be assigned to. This could be because the property doesn't exist, or because it's locked by Roblox to prevent edits.
This usually occurs with the New or Hydrate functions:
local folder = New "Folder" {
DataCost = 12345,
ThisPropertyDoesntExist = "Example"
}
Tip
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!
since v0.1
cannotConnectChange¶
The Frame class doesn't have a property called 'Foo'.
This message means you tried to connect to a property change event, but the property you specify doesn't exist on the instance.
This usually occurs with the New or Hydrate functions:
local textBox = New "TextBox" {
[OnChange "ThisPropertyDoesntExist"] = function()
...
end)
}
since v0.1
cannotConnectEvent¶
The Frame class doesn't have an event called 'Foo'.
This message means you tried to connect to an event on an instance, but the event you specify doesn't exist on the instance.
This usually occurs with the New or Hydrate functions:
local button = New "TextButton" {
[OnEvent "ThisEventDoesntExist"] = function()
...
end)
}
since v0.1
cannotCreateClass¶
Can't create a new instance of class 'Foo'.
This message means you tried to create a new instance type, but the type of instance you specify doesn't exist in Roblox.
This usually occurs with the New function:
local instance = New "ThisClassTypeIsInvalid" {
...
}
since v0.1
computedCallbackError¶
Computed callback error: attempt to index a nil value
This message means the callback of a computed object encountered an error.
local example = Computed(function()
local badMath = 2 + "fish"
end)
since v0.2
destructorNeededComputed¶
To return instances from Computeds, provide a destructor function. This will be an error soon - see discussion #183 on GitHub.
This message shows if you return destructible values from a computed object, without also specifying how to destroy those values using a destructor.
Learn more by visiting this discussion on GitHub.
local badComputed = Computed(function()
return New "Folder" { ... }
end, nil)
since v0.2
destructorNeededForKeys¶
To return instances from ForKeys, provide a destructor function. This will be an error soon - see discussion #183 on GitHub.
This message shows if you return destructible values from a ForKeys object, without also specifying how to destroy those values using a destructor.
Learn more by visiting this discussion on GitHub.
local badForKeys = ForKeys(array, function(key)
return New "Folder" { ... }
end, nil)
Note
For some time during the development of v0.2, ForKeys
would implicitly
insert a destructor for you. This behaviour still works, but it's going to
be removed in an upcoming version.
since v0.2
destructorNeededForPairs¶
To return instances from ForPairs, provide a destructor function. This will be an error soon - see discussion #183 on GitHub.
This message shows if you return destructible values from a ForPairs object, without also specifying how to destroy those values using a destructor.
Learn more by visiting this discussion on GitHub.
local badForPairs = ForPairs(array, function(key, value)
return key, New "Folder" { ... }
end, nil)
Note
For some time during the development of v0.2, ForPairs
would implicitly
insert a destructor for you. This behaviour still works, but it's going to
be removed in an upcoming version.
since v0.2
destructorNeededForValues¶
To return instances from ForValues, provide a destructor function. This will be an error soon - see discussion #183 on GitHub.
This message shows if you return destructible values from a ForValues object, without also specifying how to destroy those values using a destructor.
Learn more by visiting this discussion on GitHub.
local badForValues = ForValues(array, function(value)
return New "Folder" { ... }
end, nil)
Note
For some time during the development of v0.2, ForValues
would implicitly
insert a destructor for you. This behaviour still works, but it's going to
be removed in an upcoming version.
since v0.2
forKeysDestructorError¶
ForKeys destructor error: attempt to index a nil value
This message means the destructor passed to a ForKeys object encountered an error.
local function destructor(x)
local badMath = 2 + "fish"
end
local example = ForKeys(array, doSomething, destructor)
since v0.2
forKeysKeyCollision¶
ForKeys should only write to output key 'Charlie' once when processing key changes, but it wrote to it twice. Previously input key: 'Alice'; New input key: 'Bob'
This message means you returned the same value twice for two different keys in a ForKeys object.
local data = {
Alice = true,
Bob = true
}
local example = ForKeys(data, function(key)
if key == "Alice" or key == "Bob" then
return "Charlie"
end
end)
since v0.2
forKeysProcessorError¶
ForKeys callback error: attempt to index a nil value
This message means the callback of a ForKeys object encountered an error.
local example = ForKeys(array, function(key)
local badMath = 2 + "fish"
end)
since v0.2
forPairsDestructorError¶
ForPairs destructor error: attempt to index a nil value
This message means the destructor passed to a ForPairs object encountered an error.
local function destructor(x, y)
local badMath = 2 + "fish"
end
local example = ForPairs(array, doSomething, destructor)
since v0.2
forPairsKeyCollision¶
ForPairs should only write to output key 'Charlie' once when processing key changes, but it wrote to it twice. Previously input key: 'Alice'; New input key: 'Bob'
This message means you returned the same value twice for two different keys in a ForPairs object.
local data = {
Alice = true,
Bob = true
}
local example = ForPairs(data, function(key, value)
if key == "Alice" or key == "Bob" then
return "Charlie", value
end
end)
since v0.2
forPairsProcessorError¶
ForPairs callback error: attempt to index a nil value
This message means the callback of a ForPairs object encountered an error.
local example = ForPairs(array, function(key, value)
local badMath = 2 + "fish"
end)
since v0.2
forValuesDestructorError¶
ForValues destructor error: attempt to index a nil value
This message means the destructor passed to a ForValues object encountered an error.
local function destructor(x)
local badMath = 2 + "fish"
end
local example = ForValues(array, doSomething, destructor)
since v0.2
forValuesProcessorError¶
ForValues callback error: attempt to index a nil value
This message means the callback of a ForValues object encountered an error.
local example = ForValues(array, function(value)
local badMath = 2 + "fish"
end)
since v0.2
invalidChangeHandler¶
The change handler for the 'Text' property must be a function.
This message means you tried to use OnChange on an instance's property, but instead of passing a function callback, you passed something else.
local input = New "TextBox" {
[OnChange "Text"] = "lemons"
}
since v0.2
invalidEventHandler¶
The handler for the 'Activated' event must be a function.
This message means you tried to use OnEvent on an instance's event, but instead of passing a function callback, you passed something else.
local button = New "TextButton" {
[OnEvent "Activated"] = "limes"
}
since v0.2
invalidPropertyType¶
'Frame.Size' expected a 'UDim2' type, but got a 'Color3' type.
This message means you tried to set a property on an instance, but you gave it the wrong type of value.
This usually occurs with the New or Hydrate functions:
local ui = New "Frame" {
Size = Computed(function()
return Color3.new(1, 0, 0)
end)
}
since v0.2
invalidRefType¶
Instance refs must be Value objects.
This message means you tried to use Ref, but you didn't also give it a value object to store the instance inside of.
local thing = New "Part" {
[Ref] = 2
}
since v0.2
invalidOutType¶
[Out] properties must be given Value objects.
This message means you tried to use Out, but you didn't also give it a value object to store the property's value inside of.
local thing = New "Part" {
[Out "Color"] = true
}
since v0.2
invalidOutProperty¶
The Part class doesn't have a property called 'Flobulator'.
This message means you tried to read a property of an instance using Out, but the property can't be read. This could be because the property doesn't exist, or because it's locked by Roblox to prevent reading.
local value = Value()
local thing = New "Part" {
[Out "Flobulator"] = value
}
since v0.1
invalidSpringDamping¶
The damping ratio for a spring must be >= 0. (damping was -0.50)
This message means you gave a damping ratio to a spring object which is less than 0:
local speed = 10
local damping = -12345
local spring = Spring(state, speed, damping)
Damping ratio must always be between 0 and infinity for a spring to be physically simulatable.
since v0.1
invalidSpringSpeed¶
The speed of a spring must be >= 0. (speed was -2.00)
This message means you gave a speed to a spring object which is less than 0:
local speed = -12345
local spring = Spring(state, speed)
Since a speed of 0 is equivalent to a spring that doesn't move, any slower speed is not simulatable or physically sensible.
since v0.1
mistypedSpringDamping¶
The damping ratio for a spring must be a number. (got a boolean)
This message means you gave a damping ratio to a spring object which isn't a number.
local speed = 10
local damping = true
local spring = Spring(state, speed, damping)
since v0.1
mistypedSpringSpeed¶
The speed of a spring must be a number. (got a boolean)
This message means you gave a speed to a spring object which isn't a number.
local speed = true
local spring = Spring(state, speed)
since v0.1
mistypedTweenInfo¶
The tween info of a tween must be a TweenInfo. (got a boolean)
This message shows if you try to provide a tween info to a tween which isn't a TweenInfo:
local tweenInfo = true
local tween = Tween(state, tweenInfo)
since v0.2
multiReturnComputed¶
Returning multiple values from Computeds is discouraged, as behaviour will change soon - see discussion #189 on GitHub.
This message means you returned more than one value from a computed object.
There are two ways this could occur; either you're explicitly returning two
values (e.g. return 1, 2
) or you're calling a function which returns two
values (e.g. string.find
).
A simple fix is to surround your return expression with parentheses ()
, or to
save it into a variable before returning it.
Learn more by visiting this discussion on GitHub.
local badComputed = Computed(function()
return 1, 2, "foo", true
end, nil)
since v0.2
springTypeMismatch¶
The type 'number' doesn't match the spring's type 'Color3'.
Some methods on spring objects require incoming values to match the types previously being used on the spring.
This message means you passed a value to one of those methods, but it wasn't the same type as the type of the spring.
local colour = State(Color3.new(1, 0, 0))
local colourSpring = Spring(colour)
colourSpring:addVelocity(Vector2.new(2, 3))
since v0.1
strictReadError¶
'thisDoesNotExist' is not a valid member of 'Fusion'.
This message means you tried to access something that doesn't exist. This specifically occurs with a few 'locked' tables in Fusion, such as the table returned by the module directly.
local Foo = Fusion.thisDoesNotExist
since v0.1
unknownMessage¶
Unknown error: attempt to index a nil value
If you see this message, it's almost certainly an internal bug, so make sure to get in contact so the issue can be fixed.
When Fusion code attempts to log a message, warning or error, it needs to provide an ID. This ID is used to show the correct message, and serves as a simple, memorable identifier if you need to look up the message later. However, if that code provides an invalid ID, then the message will be replaced with this one.
since v0.1
unrecognisedChildType¶
'number' type children aren't accepted as children in `New`.
This message means you tried to pass something to Children which isn't a valid child. This usually means that you passed something that isn't an instance, array or state object.
local instance = New "Folder" {
[Children] = {
1, 2, 3, 4, 5,
{true, false},
State(Enum.Material.Grass)
}
}
Note
Note that state objects are allowed to store nil
to represent the absence
of an instance, as an exception to these rules.
since v0.1
unrecognisedPropertyKey¶
'number' keys aren't accepted in the property table of `New`.
This message means, while using New or Hydrate, you specified something in the property table that's not a property name or special key.
Commonly, this means you accidentally specified children directly inside of the property table, rather than using the dedicated Children special key.
local folder = New "Folder" {
[Vector3.new()] = "Example",
"This", "Shouldn't", "Be", "Here"
}
since v0.2
unrecognisedPropertyStage¶
'discombobulate' isn't a valid stage for a special key to be applied at.
Fusion provides a standard interface for defining special keys which can be used to extend the functionality of New or Hydrate.
Within this interface, keys can select when they run using the stage
field.
If an unexpected value is passed as the stage, then this error will be thrown
when attempting to use the key.
local Example = {
type = "SpecialKey",
kind = "Example",
stage = "discombobulate",
apply = function() ... end
}
local folder = New "Folder" {
[Example] = "foo"
}