如何在服务器端存储令牌[Angular Universal]

时间:2017-04-11 16:00:37

标签: angular express universal universal-cli

我发现这篇文章:https://github.com/angular/universal/issues/272其中user @ gdi2290解释了如何添加该功能

但我的代码中出现错误:

  

/home/master/Documents/rs-dash/dist/server/server.bundle.js:317 throw   新错误("模块构建失败:错误:   /home/master/Documents/rs-dash/src/app/app.node.module.ts(97,48):   物业'注射器'在类型上不存在   ' ApplicationRef'。)\ N /家/主/文档/ RS-破折号/ SRC /应用程序/ app.node.module.ts   (97,61):找不到姓名' YourServiceWithState'。)\ n at   _checkDiagnostics(/home/master/Documents/universal-cli/packages/@ngtools/webpack/src/loader.ts:115:15)\n   在   /home/master/Documents/universal-cli/packages/@ngtools/webpack/src/loader.ts:140:17");   ^

我在节点模块中添加了:

constructor(public appRef: ApplicationRef) {

    }
    // lives in your node main module
    universalDoDehydrate(universalCache) {
        var yourServiceWithState = this.appRef.injector.get(YourServiceWithState)
        var key = 'yourServiceWithState._state'
        universalCache[key] = yourServiceWithState._state.justOneProp
    }

并在浏览器模块中:

constructor(public appRef: ApplicationRef) {
        // lives in your browser main module
        var key = 'yourServiceWithState._state'
        if (UNIVERSAL_CACHE[key]) {
            localStorage[key] = UNIVERSAL_CACHE[key]
        }
    }

任何人都知道什么是问题,我使用universal-cli

1 个答案:

答案 0 :(得分:0)

我遇到了问题并开发了一个缓存&它的服务器端解决方案(4个独立的包用于服务器和浏览器平台上的缓存操作)。

检查ng-seed/universal处的实施情况。一切都是通过方法/ loader / etc上的@Cached(...)装饰器来处理的,你希望它被缓存。此外,还可以使用缓存API来使用缓存方法(hasgetset)。

以下是您需要使用的软件包,用于服务器端缓存: