AUR0101
Error Message
AUR0101: Ast eval error: binding behavior "<behavior_name>" could not be found. Did you forget to register it as a dependency?
Where <behavior_name>
is the name of the binding behavior used in the expression.
Description
This error occurs during the evaluation of a binding expression when a referenced binding behavior (like debounce
, throttle
, signal
, etc.) cannot be located in the application's dependency injection container.
Cause
The most common reasons for this error are:
Not Registered: The binding behavior was not registered globally (e.g., using
Aurelia.register(...)
) or locally within the component that uses it. Aurelia needs to know about the behavior to apply it.Typo: The name of the binding behavior in the template expression is misspelled (e.g.,
& debouce
instead of& debounce
).Incorrect Import/Configuration: If the behavior comes from a plugin or package, that package might not have been configured correctly during application startup, or the specific behavior wasn't imported/registered as instructed by the package documentation.
Solution
Register the Behavior: Ensure the binding behavior is registered.
Global Registration: If the behavior should be available throughout the application, register it during your Aurelia application setup (often in
main.ts
ormain.js
).import { Aurelia, StandardConfiguration } from 'aurelia'; import { MyBindingBehavior } from './my-binding-behavior'; // Example Aurelia .register(StandardConfiguration) .register(MyBindingBehavior) // Register here .app(MyApp) .start();
Local Registration: If the behavior is specific to a component, register it in the component's
dependencies
array.import { customElement } from 'aurelia'; import { MyBindingBehavior } from './my-binding-behavior'; // Example @customElement({ name: 'my-component', template: `<input value.bind="value & myBindingBehavior">`, dependencies: [MyBindingBehavior] // Register here }) export class MyComponent { value = ''; }
Built-in Behaviors: Standard behaviors like
debounce
,throttle
,signal
,updateTrigger
, etc., are typically included withStandardConfiguration
orDefaultComponents
. Ensure you have registered the appropriate configuration.
Check Spelling: Carefully verify the spelling of the binding behavior name in your HTML template, ensuring it matches the registered name (usually camelCase converted to kebab-case in the template, e.g.,
MyBindingBehavior
becomesmy-binding-behavior
, although the original case might also work depending on registration).Verify Plugin Configuration: If the behavior is part of a plugin, consult the plugin's documentation to ensure it was installed and configured correctly in your application's entry point.
Example
<!-- Assumes 'debounce' behavior should be available -->
<!-- Incorrect: Typo in behavior name -->
<input value.bind="searchTerm & debouce:500">
<!-- Incorrect: Assuming 'myCustomBehavior' is not registered -->
<p textcontent.bind="message & myCustomBehavior"></p>
<!-- Correct: Using a standard, registered behavior -->
<input value.bind="searchTerm & debounce:500">
<!-- Correct: Using a custom behavior registered locally or globally -->
<p textcontent.bind="message & myCustomBehavior"></p>
Debugging Tips
Double-check the registration point (global or local) for the specific binding behavior.
Verify the exact name used for registration and compare it (case-insensitively, considering kebab-case conversion) with the name used in the template.
Look at your
main.ts
(or equivalent startup file) to confirm that necessary configurations (likeStandardConfiguration
or plugin registrations) are present.If it's a custom behavior, ensure it's correctly exported and imported where it's registered.
Last updated
Was this helpful?