Open alo opened 6 years ago
Hi @alo
Thanks for creating the issue. However can you elaborate on the exact problem your are facing with this library and universal? i mean: what command did you run? what is the stacktrace? any other repro steps will be useful....
@alo, I was running into the same issue. I followed the instructions on adding everything to the module, but also had to add the injector to the root app.component
Thanks @zackarychapple. That's it. Even if you don't use it, you have to add the injector to the root app.component
@tinesoft is it enough information for you or can I help you with something?
Here is my workaround :
import { Component, Injector, Inject, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { NgcCookieConsentService } from 'ngx-cookieconsent';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent {
constructor(
@Inject(PLATFORM_ID) private readonly platformId: Object,
private readonly injector: Injector
) {}
ngOnInit() {
super.ngOnInit();
if (!isPlatformBrowser(this.platformId)) {
return;
}
const ccService = this.injector.get(NgcCookieConsentService);
// Configure stuff
// ...
ccService.init(ccService.getConfig());
}
}
ccService.init(ccService.getConfig());
If you Import NgcCookieConsentService as you did, it will trigger this error :
Node Express server listening on http://localhost:4000
ERROR { Error: StaticInjectorError(AppServerModule)[NgcCookieConsentService]:
StaticInjectorError(Platform: core)[NgcCookieConsentService]:
NullInjectorError: No provider for NgcCookieConsentService!
but if you do create an Injectable :
import { Injectable, Injector, PLATFORM_ID, Inject } from '@angular/core';
import { NgcCookieConsentService } from 'ngx-cookieconsent';
import { isPlatformServer } from '@angular/common';
@Injectable()
export class CookieLaw {
constructor(
private readonly injector: Injector,
@Inject(PLATFORM_ID) private platformId
) {
if (!isPlatformServer(this.platformId)) {
this.injector.get(NgcCookieConsentService);
}
}
}
and then simply import it in your app.component (also put it as a parameter on the constructor) & app.module . This worked for me.
Edit* : I forgot to mention, you should import the NgcCookieConsentModule on app.browser.module.
Followed the instruction as documented in Angular 8. But the popup is not cumming in page.
I I have same issue, but i could not been able to solve it. I am running angular universal 10 with following command: npm run build:ssr && npm run serve:ssr Which represents: "serve:ssr": "node dist/compy/server/main.js", "build:ssr": "ng build --prod && ng run compy:server:production",
And i am getting following error: ERROR TypeError: Cannot read property 'initialise' of undefined at ngx_cookieconsent_NgcCookieConsentService.init (C:\Coding\compyFront\dist\compy\server\main.js:1:1693848) at new ngx_cookieconsent_NgcCookieConsentService (C:\Coding\compyFront\dist\compy\server\main.js:1:1693078) at Object.NgcCookieConsentService_Factory [as factory] (C:\Coding\compyFront\dist\compy\server\main.js:1:1695042) at R3Injector.hydrate (C:\Coding\compyFront\dist\compy\server\main.js:1:2806442) at R3Injector.get (C:\Coding\compyFront\dist\compy\server\main.js:1:2803174) at NgModuleRef$1.get (C:\Coding\compyFront\dist\compy\server\main.js:1:2981584) at Object.get (C:\Coding\compyFront\dist\compy\server\main.js:1:2950678) at getOrCreateInjectable (C:\Coding\compyFront\dist\compy\server\main.js:1:2717832) at Module.ɵɵdirectiveInject (C:\Coding\compyFront\dist\compy\server\main.js:1:2837088) at NodeInjectorFactory.AppComponent_Factory [as factory] (C:\Coding\compyFront\dist\compy\server\main.js:1:1699228)
Please your help, since i am following everything you mention in documentation. Thanks in advance.
I I have same issue, but i could not been able to solve it. I am running angular universal 10 with following command: npm run build:ssr && npm run serve:ssr Which represents: "serve:ssr": "node dist/compy/server/main.js", "build:ssr": "ng build --prod && ng run compy:server:production",
And i am getting following error: ERROR TypeError: Cannot read property 'initialise' of undefined at ngx_cookieconsent_NgcCookieConsentService.init (C:\Coding\compyFront\dist\compy\server\main.js:1:1693848) at new ngx_cookieconsent_NgcCookieConsentService (C:\Coding\compyFront\dist\compy\server\main.js:1:1693078) at Object.NgcCookieConsentService_Factory [as factory] (C:\Coding\compyFront\dist\compy\server\main.js:1:1695042) at R3Injector.hydrate (C:\Coding\compyFront\dist\compy\server\main.js:1:2806442) at R3Injector.get (C:\Coding\compyFront\dist\compy\server\main.js:1:2803174) at NgModuleRef$1.get (C:\Coding\compyFront\dist\compy\server\main.js:1:2981584) at Object.get (C:\Coding\compyFront\dist\compy\server\main.js:1:2950678) at getOrCreateInjectable (C:\Coding\compyFront\dist\compy\server\main.js:1:2717832) at Module.ɵɵdirectiveInject (C:\Coding\compyFront\dist\compy\server\main.js:1:2837088) at NodeInjectorFactory.AppComponent_Factory [as factory] (C:\Coding\compyFront\dist\compy\server\main.js:1:1699228)
Please your help, since i am following everything you mention in documentation. Thanks in advance.
did you manage to fix this error in the end? I'm running into the same error
Hello, My error is not on initialise. My problem is that with a custom layout the click to open the popup that doesn't expand the popup. In my case i have angular 8 + angular universal + domino.
Do you have this problem?
Hi, I am also getting the same error when execute npm run server with angular universal
Node Express server listening on http://localhost:4000 ERROR TypeError: Cannot read property 'initialise' of undefined
"ngx-cookieconsent": "^2.2.3", Angular 9
Hi TGihan, were you able to resolve this
initialise
issue?
Bug Report or Feature Request (mark with an
x
)OS and Version?
macOS High Sierra
Versions
Mention any other details that might be useful
It's not working with universal. I've seen similar issues with other modules. This could help... https://github.com/valor-software/ngx-bootstrap/issues/2369#issuecomment-346939416