Now I got this exception: main.ts:176 RuntimeError: NG0200: Circular dependency in DI detected for ChangeDetectionScheduler. Find more at https://angular.dev/errors/NG0200 at throwCyclicDependencyError (core.mjs:970:11) at R3Injector.hydrate (core.mjs:2316:17) at R3Injector.get (core.mjs:2189:33) at effect (core.mjs:40806:31) at new AbpTitleStrategy (abp-ng.core.mjs:2136:15) at Object.AbpTitleStrategy_Factory [as factory] (abp-ng.core.mjs:2158:23) at core.mjs:2322:47 at runInInjectorProfilerContext (core.mjs:880:9) at R3Injector.hydrate (core.mjs:2321:21) at R3Injector.get (core.mjs:2189:33)
Does the provider sequence matter?
Move CORE_OPTIONS out side provideAbpCore(), that DI exception is gone. I add more providers for other error, there is final version
bootstrapApplication(AppComponent, {
    providers: [
        provideAppInitializer(appInitializerFactory()),
        provideAbpCore(),
        { provide: TitleStrategy, useClass: DefaultTitleStrategy },
        importProvidersFrom(AppRoutingModule,  ThemeLeptonXModule.forRoot(), ThemeSharedModule),
    
        
    {
      provide: CORE_OPTIONS,
      useValue: {
        environment,
        registerLocaleFn: registerLocale(),
      },
    },
{
  provide: OTHERS_GROUP,
  useValue: 'Others', // <-- this string will be used as the group ID
},
{
  provide: LPX_LAYOUT_STYLE_FINAL,
  useValue: () => {}, // <-- safe default
},
{
      provide: TENANT_KEY,
      useValue: 'Abp.TenantId',
    },
    importProvidersFrom(AccountPublicConfigModule.forRoot(), AccountAdminConfigModule.forRoot(),  IdentityConfigModule.forRoot(), SaasConfigModule.forRoot()),
     
    provideSettingManagementConfig(),
    provideTextTemplateManagementConfig(),
    provideOpeniddictproConfig(),
    provideAuditLoggingConfig(),
    provideLanguageManagementConfig(),
    provideAbpOAuth(),
    
        provideRouter(appRoutes),
        
        { provide: ErrorHandler, useClass: GlobalErrorHandler },
        AuditInterceptorProvider,
        provideAnimations(),
         
        provideHttpClient(withInterceptorsFromDi())
    ]
})
    .catch(err => console.error(err));
Now the error is: ERROR: TypeError: layoutStyles is not iterable at Object.styleLoadFactory [as useFactory] (volo-ngx-lepton-x.core.mjs:1486:30) at Object.factory (core.mjs:2425:38) at core.mjs:2322:47 at runInInjectorProfilerContext (core.mjs:880:9) at R3Injector.hydrate (core.mjs:2321:21) at R3Injector.get (core.mjs:2189:33) at injectInjectorOnly (core.mjs:1116:40) at ɵɵinject (core.mjs:1122:60) at injectArgs (core.mjs:1253:23) at Object.factory (core.mjs:2425:52)
I use command ng generate @angular/core:standalone to migration the application to stand-alone mode.
The bootstrap generated by above command are as below:
bootstrapApplication(AppComponent, {
    providers: [
        importProvidersFrom(BrowserModule, AppRoutingModule, SharedModule, ErrorsModule, RootStoreModule, AppInsightsModule, 
        // ABP related
        CoreModule.forRoot({
            environment,
            registerLocaleFn: registerLocale(),
        }), AbpOAuthModule.forRoot(), AccountAdminConfigModule.forRoot(), AccountPublicConfigModule.forRoot(), IdentityConfigModule.forRoot(), LanguageManagementConfigModule.forRoot(), SaasConfigModule.forRoot(), AuditLoggingConfigModule.forRoot(), OpeniddictproConfigModule.forRoot(), TextTemplateManagementConfigModule.forRoot(), SettingManagementConfigModule.forRoot(), AbpModule),
        // MANAGE_PROFILE_TAB_PROVIDER,
        APP_ROUTE_PROVIDER,
        { provide: APP_INITIALIZER, useFactory: init_AppConfigService, deps: [Injector, AppConfigService], multi: true },
        { provide: ErrorHandler, useClass: GlobalErrorHandler },
        AuditInterceptorProvider,
        provideAnimations(),
        provideHttpClient(withInterceptorsFromDi())
    ]
})
    .catch(err => console.error(err));
})();
When run the application, there is DI circulation error. So I change code to this:
  bootstrapApplication(AppComponent, {
    providers: [
        
   importProvidersFrom(AppRoutingModule, ThemeLeptonXModule.forRoot()),
   /* provideAbpCore(
			withOptions({
				environment,
				registerLocaleFn: registerLocale(),
			}),
		),
    */    
        provideRouter(appRoutes),
        
        { provide: ErrorHandler, useClass: GlobalErrorHandler },
        AuditInterceptorProvider,
        provideAnimations(),
         
        provideHttpClient(withInterceptorsFromDi())
    ]
})
    .catch(err => console.error(err));
})();
I got this exception, I believe LPX_MENU_ITMES is in LPXCoreModule which already imported as provider?
ERROR: NullInjectorError: NullInjectorError: No provider for InjectionToken CORE_OPTIONS! at NullInjector.get (core.mjs:1676:27) at R3Injector.get (core.mjs:2199:33) at R3Injector.get (core.mjs:2199:33) at injectInjectorOnly (core.mjs:1116:40) at Module.ɵɵinject (core.mjs:1122:60) at Object.RestService_Factory [as factory] (abp-ng.core.mjs:56:103) at core.mjs:2322:47 at runInInjectorProfilerContext (core.mjs:880:9) at R3Injector.hydrate (core.mjs:2321:21) at R3Injector.get (core.mjs:2189:33)
If uncomment the lines:
provideAbpCore(
			withOptions({
				environment,
				registerLocaleFn: registerLocale(),
			}),
		),
The exception is: main.ts:82 RuntimeError: NG0200: Circular dependency in DI detected for ChangeDetectionScheduler. Find more at https://angular.dev/errors/NG0200 at throwCyclicDependencyError (core.mjs:970:11) at R3Injector.hydrate (core.mjs:2316:17) at R3Injector.get (core.mjs:2189:33) at effect (core.mjs:40806:31) at new AbpTitleStrategy (abp-ng.core.mjs:2136:15) at Object.AbpTitleStrategy_Factory [as factory] (abp-ng.core.mjs:2158:23)
Hi,
Can you share your
Node.js,Yarnandnpmversions?# get node version node -v # get yarn version yarn -v # get npm version npm -vCheck if your node & yarn version matches with Pre-requirements documentation: https://abp.io/docs/latest/get-started/pre-requirements#node-js-and-yarn
ABP uses classic yarn, which is
Yarn v1.22+. Make sure this is correct.
Node.js V22.14.0 Yarn 1.22.22 npm 10.9.2
Hi,
I got this build error warning "@volo/abp.ng.account > angularx-qrcode@17.0.1" has incorrect peer dependency "@angular/core@^17.0.0". warning "@volosoft/abp.ng.theme.lepton-x > @ng-bootstrap/ng-bootstrap@17.0.1" has incorrect peer dependency "@angular/common@^18.0.0". warning "@volosoft/abp.ng.theme.lepton-x > @ng-bootstrap/ng-bootstrap@17.0.1" has incorrect peer dependency "@angular/core@^18.0.0". warning "@volosoft/abp.ng.theme.lepton-x > @ng-bootstrap/ng-bootstrap@17.0.1" has incorrect peer dependency "@angular/forms@^18.0.0". warning "@volosoft/abp.ng.theme.lepton-x > @ng-bootstrap/ng-bootstrap@17.0.1" has incorrect peer dependency "@angular/localize@^18.0.0". warning "@volosoft/abp.ng.theme.lepton-x > @ng-bootstrap/ng-bootstrap@17.0.1" has unmet peer dependency "@popperjs/core@^2.11.8".
In my package.json: @volosoft/abp.ng.theme.lepton-x": "4.1.1", "@angular/core": "~19.1.0" ...
Can I above warnings?
Thanks,
<abp-dynamic-layout></abp-dynamic-layout> is in core module
If it possible make Angular project to be stand-alone: true after upgrade to Angular 19.
if yes, what these two components come from which ABP module: <abp-loader-bar></abp-loader-bar> <abp-dynamic-layout></abp-dynamic-layout>
What about new tables created in Administration and Identity MicroService:
public class IdentityServiceDbContext :
AbpDbContext,
IIdentityProDbContext,
IOpenIddictDbContext,
IHasEventInbox,
IHasEventOutbox
public DbSet IncomingEvents { get; set; }
public DbSet OutgoingEvents { get; set; }
                        Micro Services application.
For the ABP 9 project templated created by ABP studio. There are new micro services created, audit-logging and language. When I upgrade existing ABP 8 solution, do I have to add these two new micro services to solution?
In administration micro service, there are three new connection strings added, do I have to add them when upgrading? "AuditLoggingService": "Server=localhost,1434; User Id=sa; Password=myPassw@rd; Database=Ess_AuditLoggingService; TrustServerCertificate=true; Connect Timeout=240;", "LanguageService": "Server=localhost,1434; User Id=sa; Password=myPassw@rd; Database=Ess_LanguageService; TrustServerCertificate=true; Connect Timeout=240;", "AbpBlobStoring": "Server=localhost,1434; User Id=sa; Password=myPassw@rd; Database=Ess_BlobStoring; TrustServerCertificate=true; Connect Timeout=240;"
In Administration Db context, ABP 9 code:
[ConnectionStringName(DatabaseName)] [ReplaceDbContext( typeof(IPermissionManagementDbContext), typeof(IFeatureManagementDbContext), typeof(ITextTemplateManagementDbContext), typeof(ISettingManagementDbContext) )] public class AdministrationServiceDbContext : AbpDbContext<AdministrationServiceDbContext>, IPermissionManagementDbContext, IFeatureManagementDbContext, ISettingManagementDbContext, ITextTemplateManagementDbContext, IHasEventInbox, IHasEventOutbox
ABP 8 code: [ConnectionStringName(AdministrationServiceDbProperties.ConnectionStringName)] public class AdministrationServiceDbContext : AbpDbContext<AdministrationServiceDbContext>, IPermissionManagementDbContext, ISettingManagementDbContext, IFeatureManagementDbContext, IAuditLoggingDbContext, ILanguageManagementDbContext, ITextTemplateManagementDbContext, IBlobStoringDbContext
Do I have to modify DbConext accordingly?
Switching to Cosmos DB (Mongo version) is very simply, just change connection string. the code seems working. Encryption seems not that easy.
Hi, as @berkansasmaz mentioned we don't have experience with CosmosDB much. But it should be possible because we are only abstracting some key points on the MongoDB side, everything you can do with a plain .NET application with MongoDB provider, you can do it with an ABP-based application.
So, to better assist you, can you share what you've tried so far, what are your steps, and at which point you need our help? (please provide any information that think can help us to guide you better).
Since, this is not an official provider provided by us, these information will help us answer better. Thanks for your understanding and waiting for details from you.
Regards.
No worried, This is my understanding too. For the generic implementation that fit Mongo DB and Cosmos DB, there wouldn't have specific implementation for Cosmos DB's special feature. We can close this ticket.