stormpath / stormpath-sdk-angular

Angular Components for Stormpath

Home Page:https://docs.stormpath.com/angular/api/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exception: Call to Node module failed with error: ReferenceError: window is not defined

consigliory opened this issue · comments

I using template https://github.com/MarkPieszak/aspnetcore-angular2-universal.
first request after server started is fine and reload it throw this error

Exception: Call to Node module failed with error: ReferenceError: window is not defined
at Ng2Webstorage.initStorageListener (/Users/roman_petrenko/git/source/elixir/node_modules/ng2-webstorage/bundles/core.umd.js:354:13)
at new Ng2Webstorage (/Users/roman_petrenko/git/source/elixir/node_modules/ng2-webstorage/bundles/core.umd.js:332:14)
at NgModuleInjector.AppServerModuleInjector.createInternal (/AppServerModule/module.ngfactory.js:576:28)
at NgModuleInjector.create (/Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:8979:80)
at NgModuleFactory.create (/Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:8953:22)
at /Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:8523:65
at ZoneDelegate.invoke (/Users/roman_petrenko/git/source/elixir/node_modules/zone.js/dist/zone-node.js:229:26)
at Object.onInvoke (/Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:4427:41)
at ZoneDelegate.invoke (/Users/roman_petrenko/git/source/elixir/node_modules/zone.js/dist/zone-node.js:228:32)
at Zone.run (/Users/roman_petrenko/git/source/elixir/node_modules/zone.js/dist/zone-node.js:113:43)
at NgZone.run (/Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:4296:66)
at PlatformRef_.bootstrapModuleFactoryWithZone (/Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:8521:27)
at PlatformRef
.bootstrapModuleFactory (/Users/roman_petrenko/git/source/elixir/node_modules/@angular/core/bundles/core.umd.js:8504:25)
at NodePlatform.bootstrapModule (/Users/roman_petrenko/git/modules/platform-node/node-platform.ts:505:31)
at NodePlatform.serializeModule (/Users/roman_petrenko/git/modules/platform-node/node-platform.ts:153:12)

It looks like ng2-webstorage is not compatible with angular2-universal. It seems angular2-cookies has support for universal. You can switch from using local storage to cookie storage by overriding the tokenStore provider in your app.module.ts.

  providers: [
    {
      provide: StormpathConfiguration, useFactory: stormpathConfig
    },
    {
      provide: 'tokenStore', useClass: CookieTokenStoreManager
    }
  ]

If that doesn't work, you could try implementing your own TokenStoreManager.

you absolutely right. ng2-websorage does not support universal. I replaced it with their store https://github.com/MarkPieszak/aspnetcore-angular2-universal/blob/master/Client/shared/cache/storage/storage.service.ts#L16-L21

If this works for you, please close this issue.