GithubHelp home page GithubHelp logo

Comments (5)

ostrowskikrzysztof avatar ostrowskikrzysztof commented on April 16, 2024 1

It seems that this is still problem (v.4.0.1), REQUEST is null in ng component on ssr.

My app.component.ts

import { Component, Inject, Optional, PLATFORM_ID } from '@angular/core';
import { Request } from 'express';
import { REQUEST } from '@nguniversal/express-engine/tokens';
import { isPlatformServer } from '@angular/common';

@Component({
  selector: 'workspace-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.styl'],
})
export class AppComponent {
  title = 'title';

  constructor(
    @Optional() @Inject(REQUEST) private request: Request,
    @Inject(PLATFORM_ID) private readonly platformId: any,
  ) {
    if (isPlatformServer(this.platformId)) {
      console.log('my request', this.request);
    }
  }
}

image

Providers for REQUEST and RESPONSE were removed in that commit
b43e23f#diff-a721ebf1ae45ad7227e059567df31f08L39

from ng-universal.

mbeckenbach avatar mbeckenbach commented on April 16, 2024

I've found it.

You are adding it to the extraProviders in setup-universal.utils.ts as 'serverUrl'.

{
          provide: 'serverUrl',
          useValue: `${options.req.protocol}://${options.req.get('host')}`
        }

Then on the client side it can be injected as an optional dependency:

constructor(
    @Inject(PLATFORM_ID) platform: any,
    @Optional() @Inject('serverUrl') serverUrl: string
  ) {
    if (isPlatformServer(platform)) {
      console.log('api urls should be prefixed with:', serverUrl);
    }
  }

So it should be easy to create an http interceptor to make api calls working in ssr.

Maybe this should be added to your example app and documentation.

from ng-universal.

eugenotop avatar eugenotop commented on April 16, 2024
import { CookieService, CookieBackendService } from 'ngx-cookie';
@NgModule({
  imports: [
    AppModule,
    ServerModule,
    ModuleMapLoaderModule,
  ],
  bootstrap: [AppComponent],
  providers: [{ provide: CookieService, useClass: CookieBackendService }], // <--- CHANGES * * * * *
})
export class AppServerModule {}

/* server.ts */

// Find the call to res.render() in the file and
// update it with providers for 'REQUEST' and 'RESPONSE'

app.get('*', (req, res) => {
  res.render('index', {
    req: req,
    res: res,
    providers: [
      {
        provide: 'REQUEST', useValue: (req)
      },
      {
        provide: 'RESPONSE', useValue: (res)
      }
    ]
  });
});

Error
CookieService -> InjectionToken REQUEST
NullInjectorError: No provider for InjectionToken REQUEST! `

from ng-universal.

kamilmysliwiec avatar kamilmysliwiec commented on April 16, 2024

Fixed in #12. Published as 0.3.0

from ng-universal.

Mephiztopheles avatar Mephiztopheles commented on April 16, 2024

my app is throwing expections on every reload, because my server doesnt get the cookies for Authentication

from ng-universal.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.