Giter Site home page Giter Site logo

angular-ru / universal-starter Goto Github PK

View Code? Open in Web Editor NEW
548.0 35.0 201.0 12.48 MB

Angular 9 Universal repo with many features

Home Page: https://ssr9.gorniv.com

License: MIT License

TypeScript 73.86% JavaScript 2.19% HTML 4.93% SCSS 19.01%
angular universal expressionengine example material2 primeng server-side-rendering cookie webpack ssr

universal-starter's Introduction

Angular RU Universal Starter Angular-RU Angular-RU Universal

Build Status Build Status

If you like this project please show your support with a GitHub star. Much appreciated!

Repository with Angular CLI and Angular Universal

Translations:

Resources:

Plans:

  • Angular 11
  • document is not defined and window is not defined - here
  • Angular Material2 UI components - individual branch
  • Primeng UI components - [individual branch] (https://github.com/Angular-RU/angular-universal-starter/tree/primeng)
  • modules import depending on the platform (MockServerBrowserModule)
  • execution of queries to api on the server TransferHttp
  • work with cookies on the server UniversalStorage
  • Uses ngx-meta for SEO (title, meta tags, and Open Graph tags for social sharing).
  • uses ngx-translate to support internationalization (i18n)
  • uses ORIGIN_URL - for absolute queries
  • @angular/service-worker(ng add @angular/pwa --project universal-demo)

How to start

  • yarn or npm install
  • yarn start or npm run start - for client rendering
  • yarn ssr or npm run ssr - for server-side rendering
  • yarn build:universal or npm run build:universal - for assembly in release
  • yarn server or npm run server - to start the server
  • yarn build:prerender or npm run build:prerender - to generate static by static.paths.ts
  • for watch with ssr - npm run ssr:watch

How to use this repository in your project:

To transfer ssr to your repository, you need the following files:

  • .angular-cli.json
  • server.ts
  • prerender.ts
  • webpack.config.js
  • main.server.ts
  • main.browser.ts
  • shared/*
  • forStorage/*
  • environments/*
  • app.browser.module.ts
  • app.server.module.ts

References

Official example in English: https://github.com/angular/universal-starter Modules used for universal:

Features (Important)

  • The module for TransferHttp uses import {TransferState} from '@angular/platform-browser'; and it is necessary to implement the request rest api on the server and the absence of the second request a second time. See home.component.ts (delay 3c)
this.http.get('https://reqres.in/api/users?delay=3').subscribe(result => {
    this.result = result;
});
  • export const AppRoutes = RouterModule.forRoot(routes, { initialNavigation: 'enabled' });- so that there is no flashing of the page!

  • to work with cookies, it is written AppStorage, which with DI allows you to give different implementations for the server and the browser. See server.storage.ts and browser.storage.ts for implementations. In server.ts there is

providers: [
    {
        provide: REQUEST, useValue: (req)
    },
    {
        provide: RESPONSE, useValue: (res)
    }
]

to work with REQUEST and RESPONSE via DI - this is necessary for implementing UniversalStorage when working with cookies.

  • webpack.config.js is written exclusively for building server.ts file in server.js, since angular-cli has [bug](https: //github.com / angular/angular-cli/issues/7200) to work with 3d dependencies. - To solve some problems, use the following code in server.ts Solving the problems of global variables, including document is not defined and window is not defined
const domino = require('domino');
const fs = require('fs');
const path = require('path');
const template = fs.readFileSync(path.join(__dirname, '.', 'dist', 'index.html')).toString();
const win = domino.createWindow(template);
const files = fs.readdirSync(`${process.cwd()}/dist-server`);
// const styleFiles = files.filter(file => file.startsWith('styles'));
// const hashStyle = styleFiles[0].split('.')[1];
// const style = fs.readFileSync(path.join(__dirname, '.', 'dist-server', `styles.${hashStyle}.bundle.css`)).toString();

global['window'] = win;
Object.defineProperty(win.document.body.style, 'transform', {
  value: () => {
    return {
      enumerable: true,
      configurable: true
    };
  },
});
global['document'] = win.document;
global['CSS'] = null;
// global['XMLHttpRequest'] = require('xmlhttprequest').XMLHttpRequest;
global['Prism'] = null;
  global['navigator'] = req['headers']['user-agent'];

this allows you to remove some of the problems when working with undefined.

Migrate 5 to 6

universal-starter's People

Contributors

alexanderfsp avatar dependabot[bot] avatar ehot-gh avatar glukki avatar gorniv avatar greenkeeper[bot] avatar hitpopdimestop avatar ilflask avatar kidqn avatar kirjs avatar michaelsemchenko avatar morz avatar renovate-bot avatar rsboarder avatar samber avatar smip avatar splincode avatar stivin avatar vadjs avatar vodnicearv avatar zaitsev1393 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

universal-starter's Issues

using TransferHttp / TransferState in APP_INITIALIZER

When you try to use TransferHttp or TransferState in the service, provided by APP_INITIALIZER, all requests that uses TransferHttp in app executes twice (on the client and on the server).

For reproducing:

  1. clone https://github.com/MichaelSemchenko/angular-universal-starter
  2. npm run ssr
  3. go to the /back rout and refresh page

If we use HttpClient instead TransferHttp in app-load.service.ts, all requests in transfer-back.component.ts works fine and not executes twice, but (obviously) data is not transfered via transferState to the client.

Expected:
TransferHttp in APP_INITIALIZER prodided service doesn't brake in caching via TransferState, requests executes once on the server, data passed via TranferState

Use prerender and dynamic render

Добавить пример использования prerender страниц при запуске node server.js
Add an example of using prerender pages when run node server.js

main.14a48dd3440725b4171f.bundle.js:1 ERROR Error: Uncaught (in promise): TypeError: oo[t] is not a constructor

Привет

спасибо за проект, очень интересно
при ssr ionic когда кликаю на меню - ошибка
В клиентском запуске все работает.

main.14a48dd3440725b4171f.bundle.js:1 ERROR Error: Uncaught (in promise): TypeError: oo[t] is not a constructor
TypeError: oo[t] is not a constructor
at Function.LZ6q.t.create (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t._getType (main.14a48dd3440725b4171f.bundle.js:1)
at main.14a48dd3440725b4171f.bundle.js:1
at new e (polyfills.ecf9b4b1345ca40dd032.bundle.js:1)
at t.LZ6q.t.setOpen (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t.toggle (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t.toggle (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Function.LZ6q.t.create (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t._getType (main.14a48dd3440725b4171f.bundle.js:1)
at main.14a48dd3440725b4171f.bundle.js:1
at new e (polyfills.ecf9b4b1345ca40dd032.bundle.js:1)
at t.LZ6q.t.setOpen (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t.toggle (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t.toggle (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at i (polyfills.ecf9b4b1345ca40dd032.bundle.js:1)
at new e (polyfills.ecf9b4b1345ca40dd032.bundle.js:1)
at t.LZ6q.t.setOpen (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t.toggle (main.14a48dd3440725b4171f.bundle.js:1)
at t.LZ6q.t.toggle (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Object.handleEvent (main.14a48dd3440725b4171f.bundle.js:1)
at Ft (main.14a48dd3440725b4171f.bundle.js:1)
at main.14a48dd3440725b4171f.bundle.js:1

WARNING in ./node_modules/ionic-angular/util/ng-module-loader.js
20:11-36 Critical dependency: the request of a dependency is an expression
at ImportLazyContextDependency.getWarnings (c:__WORK\angular-universal-star
ter-ionic\node_modules\webpack\lib\dependencies\ContextDependency.js:39:18)
at Compilation.reportDependencyErrorsAndWarnings (c:__WORK\angular-universa
l-starter-ionic\node_modules\webpack\lib\Compilation.js:703:24)
at Compilation.finish (c:__WORK\angular-universal-starter-ionic\node_module
s\webpack\lib\Compilation.js:561:9)
at applyPluginsParallel.err (c:_WORK\angular-universal-starter-ionic\node
modules\webpack\lib\Compiler.js:506:17)
at c:__WORK\angular-universal-starter-ionic\node_modules\tapable\lib\Tapabl
e.js:289:11
at _addModuleChain (c:__WORK\angular-universal-starter-ionic\node_modules\w
ebpack\lib\Compilation.js:507:11)
at processModuleDependencies.err (c:__WORK\angular-universal-starter-ionic
node_modules\webpack\lib\Compilation.js:477:14)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
@ ./node_modules/ionic-angular/util/ng-module-loader.js
@ ./node_modules/ionic-angular/util/module-loader.js
@ ./node_modules/ionic-angular/components/modal/modal-component.ngfactory.js
@ ./src/app/app.server.module.ngfactory.js
@ ./src/main.server.ts
@ multi ./src/main.server.ts

WARNING in ./node_modules/ionic-angular/util/ng-module-loader.js
30:11-36 Critical dependency: the request of a dependency is an expression
at ImportLazyContextDependency.getWarnings (c:__WORK\angular-universal-star
ter-ionic\node_modules\webpack\lib\dependencies\ContextDependency.js:39:18)
at Compilation.reportDependencyErrorsAndWarnings (c:__WORK\angular-universa
l-starter-ionic\node_modules\webpack\lib\Compilation.js:703:24)
at Compilation.finish (c:__WORK\angular-universal-starter-ionic\node_module
s\webpack\lib\Compilation.js:561:9)
at applyPluginsParallel.err (c:_WORK\angular-universal-starter-ionic\node
modules\webpack\lib\Compiler.js:506:17)
at c:__WORK\angular-universal-starter-ionic\node_modules\tapable\lib\Tapabl
e.js:289:11
at _addModuleChain (c:__WORK\angular-universal-starter-ionic\node_modules\w
ebpack\lib\Compilation.js:507:11)
at processModuleDependencies.err (c:__WORK\angular-universal-starter-ionic
node_modules\webpack\lib\Compilation.js:477:14)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
@ ./node_modules/ionic-angular/util/ng-module-loader.js
@ ./node_modules/ionic-angular/util/module-loader.js
@ ./node_modules/ionic-angular/components/modal/modal-component.ngfactory.js
@ ./src/app/app.server.module.ngfactory.js
@ ./src/main.server.ts
@ multi ./src/main.server.ts
Hash: 7ecea4c34738c7ab1138
Version: webpack 3.8.1
Time: 3659ms
Asset Size Chunks Chunk Names
server.js 6.92 MB 0 [emitted] [big] server
prerender.js 6.21 MB 1 [emitted] [big] prerender
[184] ./src lazy 160 bytes {0} {1} [built]
[198] ./node_modules/ionic-angular/util lazy 160 bytes {0} {1} [built]
[317] ./dist-server ^./main..*.bundle$ 199 bytes {0} {1} [built]
[318] ./dist-server/main.9a5f0bf3c5db9fd29623.bundle.js 263 kB {0} {1} [optiona
l] [built]
[419] ./server.ts 2.6 kB {0} [built]
[469] ./src 160 bytes {0} [built]
[475] (webpack)/buildin/module.js 495 bytes {0} [built]
[489] ./prerender.ts 1.91 kB {1} [built]
[490] ./static.paths.ts 52 bytes {1} [built]
+ 482 hidden modules

WARNING in ./node_modules/ionic-angular/util/ng-module-loader.js
27:11-36 Critical dependency: the request of a dependency is an expression
@ ./node_modules/ionic-angular/util/ng-module-loader.js
@ ./dist-server/main.9a5f0bf3c5db9fd29623.bundle.js
@ ./dist-server ^./main..*.bundle$
@ ./server.ts

WARNING in ./node_modules/ionic-angular/util/ng-module-loader.js
37:11-36 Critical dependency: the request of a dependency is an expression
@ ./node_modules/ionic-angular/util/ng-module-loader.js
@ ./dist-server/main.9a5f0bf3c5db9fd29623.bundle.js
@ ./dist-server ^./main..*.bundle$
@ ./server.ts

publish to server

Hi

How can I publish this angular universal to a windows server ?
thank you

HTTPClient POST request not working on Angular 6 / Angular Universal

I am unable to perform POST/PUT requests
I know Angular Universal does server-side rendering so
1、Is the reason my POST requests aren't working because the view isn't being rendered in the client?
2、When post is requested, post(...).subscribe() subscribe has no callback?

create-brand.component.ts

constructor(private http: _HttpClient) {}
queryAllBrand(pagination, data) {
  this.http.post(pagination, data).subscribe(res => { // * not callback
      console.log(`this.brandListService`, {res}); 
    }, error => {
      console.log("Error", error);
    });
}

server.ts

const domino = require('domino');
const fs = require('fs');
const path = require('path');
const template = fs.readFileSync(path.join(__dirname, '.', 'dist', 'index.html')).toString();
const win = domino.createWindow(template);
const files = fs.readdirSync(`${process.cwd()}/dist-server`);
import fetch from 'node-fetch';

win.fetch = fetch;
global['window'] = win;
window.scrollTo = function() {};
Object.defineProperty(win.document.body.style, 'transform', {
  value: () => {
    return {
      enumerable: true,
      configurable: true
    };
  },
});
global['document'] = win.document;
global['navigator'] = win.navigator;
global['CSS'] = null;
// global['XMLHttpRequest'] = require('xmlhttprequest').XMLHttpRequest;
global['Prism'] = null;

import 'localstorage-polyfill';
 
global['localStorage'] = localStorage;

global['MutationObserver'] = getMockMutationObserver();
function getMockMutationObserver() {
  return class {
    observe(node, options) {
    }
    disconnect() {
    }
    takeRecords() {
      return [];
    }
  };
}

import 'reflect-metadata';
import 'zone.js/dist/zone-node';

import * as express from 'express';
import * as morgan from 'morgan';
import * as compression from 'compression';
import * as cookieparser from 'cookie-parser';
const { provideModuleMap } = require('@nguniversal/module-map-ngfactory-loader');

const mainFiles = files.filter(file => file.startsWith('main'));
const hash = mainFiles[0].split('.')[1];
const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require(`./dist-server/main.${hash}`);
import { ngExpressEngine } from '@nguniversal/express-engine';
import { REQUEST, RESPONSE } from '@nguniversal/express-engine/tokens';
const PORT = process.env.PORT || 4000;
import { ROUTES } from './static.paths';


const app = express();
app.use(compression());
app.use(cookieparser());
// Morgan
app.use(morgan('dev'));
app.use(express.static(`${__dirname}/dist`));
const redirectowww = false;
const redirectohttps = false;
const wwwredirecto = false;
app.use((req, res, next) => {
  // for domain/index.html
  if (req.url === '/index.html') {
    res.redirect(301, 'http://' + req.hostname);
  }
  next();
}
);

app.engine('html', ngExpressEngine({
  bootstrap: AppServerModuleNgFactory,
  providers: [
    provideModuleMap(LAZY_MODULE_MAP)
  ]
}));

app.set('view engine', 'html');
app.set('views', path.join(process.cwd(),'src'));
// app.set('views', path.join(process.cwd(), 'dist'));
const angularBuildPath = path.join(__dirname, '.', 'dist');
app.get('*.*', express.static(angularBuildPath));
app.get(ROUTES, express.static(path.join(__dirname, '.', 'static')));

app.get('*', (req, res) => {
  global['navigator'] = req['headers']['user-agent'];
  const http = req.headers['x-forwarded-proto'] === undefined ? 'http' : req.headers['x-forwarded-proto'];
  // tslint:disable-next-line:no-console
  console.time(`GET: ${req.originalUrl}`);
  res.render(
    '../dist/index',
    {
      req: req,
      res: res,
      providers: [
        {
          provide: REQUEST, useValue: (req)
        },
        {
          provide: RESPONSE, useValue: (res)
        },
        {
          provide: 'ORIGIN_URL',
          useValue: (`${http}://${req.headers.host}`)
        }
      ]
    },
    (err, html) => {
      if (!!err) { throw err; }
      console.log({err})
      // tslint:disable-next-line:no-console
      console.timeEnd(`GET: ${req.originalUrl}`);
      res.send(html);
    });
    console.log(`render end`);
});

// Error handler for 404 - Page Not Found
app.use((req, res, next) => {
  let err = new Error('Not Found');
  res.status(404).json({
      status: 404,
      message: err.message,
      name: err.name
  });
});

// Error handler for all other errors
app.use((err, req, res, next)=>{
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  res.status(err.status || 500).json({
      status: 500,
      message: err.message,
      name: err.name
  });
});

app.listen(PORT, () => {
  console.log(`listening on http://localhost:${PORT}!`);
});

How to run angular universal in server.js

It works find with server.ts.

Now I want to run the universal usning. server.js file of my backed.

my server.js file looks like:

delete process.env.APP_HOST;
let express = require("express");
let path = require("path");

let dotEnv = require("dotenv");
let passport = require("passport");
let app = express();
let server = require("http").Server(app);
dotEnv.load();
let fs = require("fs");
let io = require("socket.io").listen(server);
const appServer = require("./public/web/server/main");

// load intial configuration
require("./startup/initial-configuration")(app, io);
require("./server/config/socket")(io);
require("./server/config/database")(app, process.env.NODE_ENV);
require("./server/authentication/passport.local")(passport);
require("./server/authentication/passport.impersonate");
require("./startup/initial-routes")(app);
require("./server/middleware/custom-middleware")(app);

// angular universal


app.engine('html', ngUniversal.ngExpressEngine({
  bootstrap: appServer.AppServerModuleNgFactory
}));
app.get("*", (req, res) => {
  res.sendFile(path.join(__dirname, "public/web/index.html"));
});

require("./startup/schedule-jobs")(io);
module.exports = { app: app, server: server };

It does not work.

Not able to access window.screen and localStorage

I'm getting undefined when trying to get height of screen while running ssr and localStorage is also not available.I'm trying to implement your app into my by copying every file and the required parts, might be that I'm missing something important.

Cannot read property 'cookie' of undefined

I just cloned the repo, then:

npm install
npm run build:prerender

And got this:

> [email protected] generate:prerender [..]/angular-universal-starter
> node prerender.js

ERROR TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26)
ERROR { Error: Uncaught (in promise): TypeError: Cannot read property 'cookie' of undefined
TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26)
    at resolvePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:813:31)
    at resolvePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:770:17)
    at eval (webpack:///./node_modules/zone.js/dist/zone-node.js?:872:17)
    at ZoneDelegate.invokeTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:420:31)
    at Object.onInvokeTask (webpack:///./node_modules/@angular/core/fesm5/core.js?:16465:33)
    at ZoneDelegate.invokeTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:419:36)
    at Zone.runTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:187:47)
    at drainMicroTaskQueue (webpack:///./node_modules/zone.js/dist/zone-node.js?:594:35)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:721:11)
  rejection: TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26),
  promise: 
   ZoneAwarePromise {
     __zone_symbol__state: 0,
     __zone_symbol__value: TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26) },
  zone: 
   Zone {
     _properties: { isAngularZone: true },
     _parent: 
      Zone {
        _properties: {},
        _parent: null,
        _name: '<root>',
        _zoneDelegate: [ZoneDelegate] },
     _name: 'angular',
     _zoneDelegate: 
      ZoneDelegate {
        _taskCounts: [Object],
        zone: [Circular],
        _parentDelegate: [ZoneDelegate],
        _forkZS: null,
        _forkDlgt: null,
        _forkCurrZone: [Zone],
        _interceptZS: null,
        _interceptDlgt: null,
        _interceptCurrZone: [Zone],
        _invokeZS: [Object],
        _invokeDlgt: [ZoneDelegate],
        _invokeCurrZone: [Circular],
        _handleErrorZS: [Object],
        _handleErrorDlgt: [ZoneDelegate],
        _handleErrorCurrZone: [Circular],
        _scheduleTaskZS: [Object],
        _scheduleTaskDlgt: [ZoneDelegate],
        _scheduleTaskCurrZone: [Circular],
        _invokeTaskZS: [Object],
        _invokeTaskDlgt: [ZoneDelegate],
        _invokeTaskCurrZone: [Circular],
        _cancelTaskZS: [Object],
        _cancelTaskDlgt: [ZoneDelegate],
        _cancelTaskCurrZone: [Circular],
        _hasTaskZS: [Object],
        _hasTaskDlgt: [ZoneDelegate],
        _hasTaskDlgtOwner: [Circular],
        _hasTaskCurrZone: [Circular] } },
  task: 
   ZoneTask {
     _zone: 
      Zone {
        _properties: [Object],
        _parent: [Zone],
        _name: 'angular',
        _zoneDelegate: [ZoneDelegate] },
     runCount: 0,
     _zoneDelegates: null,
     _state: 'notScheduled',
     type: 'microTask',
     source: 'Promise.then',
     data: 
      ZoneAwarePromise {
        __zone_symbol__state: 0,
        __zone_symbol__value: TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26) },
     scheduleFn: undefined,
     cancelFn: null,
     callback: [Function],
     invoke: [Function] } }
Unhandled Promise rejection: Cannot read property 'cookie' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26) TypeError: Cannot read property 'cookie' of undefined
    at TranslatesService._getLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18410)
    at eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18266)
    at new ZoneAwarePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:890:29)
    at TranslatesService.initLanguage (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:18091)
    at Array.eval (webpack:///./dist-server/main.29fca69f0f92db7569fc.js?:1:61046)
    at ApplicationInitStatus.runInitializers (webpack:///./node_modules/@angular/core/fesm5/core.js?:15930:50)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16949:28)
    at _callAndReportToErrorHandler (webpack:///./node_modules/@angular/core/fesm5/core.js?:17042:22)
    at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:16947:20)
    at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:387:26)

AWS Lamda Serverless

Has anyone tried to deploy this using AWS lamda using serverless?
Some lead will be much appreciated.

Пддержка socket.io

Можно работать с socket.io и SSR?
Посмотрел это angular/universal#846
Но так и не понял.
Есть такая ошибка:
screenshot_14
в файле server.ts ничего не трогал
подключаюсь по socket.io так:
screenshot_17
пробовал убрать явное объявление websockets при подключении
всё-ровно не работает

Redirect from an external URL

Guys, I need a help.
I need to do a Universal Angular redirect to an external URL.

When returning the API from an id that does not exist I need to send to an external URL of my app.

As it runs on the server, I can't use the default redirect.
Has anyone of you ever been through this? How to make? Can you help me please?

Auto restart and rebuild angular universal on save

I turned my application to angular universal. It's great but I have a problem with developing mode. I need to see my editing result real-time. I need to restart my app on each atrl+s (save) like build --watch and nodmeon.

My server is Eexpressjs and I'm using the command "npm run build:ssr" after each edit. It takes lots of time!!
How can I do that?

Dynamic meta injection inside constructor

I was wondering if there could be a way to inject meta tags and title
for any component in their respective constructor.

I have a Search Result component which updates its meta and title
on each different search, but I cant find a way to inject the meta and title dynamically.

'format:check command not working

0 info it worked if it ends with ok
1 verbose cli [ 'C:\Program Files\nodejs\node.exe',
1 verbose cli 'C:\Users\MKHN\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js',
1 verbose cli 'run',
1 verbose cli 'format:check' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'preformat:check', 'format:check', 'postformat:check' ]
5 info lifecycle [email protected]preformat:check: [email protected]
6 info lifecycle [email protected]
format:check: [email protected]
7 verbose lifecycle [email protected]format:check: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]
format:check: PATH: C:\Users\MKHN\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;D:\farmen\farmen-gui\node_modules.bin;C:\opt\python\Scripts;C:\opt\python;C:\Program Files\Docker\Docker\Resources\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\nodejs;C:\opt\apache-maven-3.6.0\bin;C:\Program Files\PuTTY;C:\Program Files\Oracle\Berkeley DB 12cR1 6.2.32\bin;C:\opt\oracle\instantclient_11_2;C:\ORACLE\Product\11.2\client_1;C:\opt\jdk1.8.0_161-64\bin;C:\opt\jboss-eap-6.2\bin;C:\opt\jdk1.8.0_161-64\jre\bin;C:\Program Files\PostgreSQL\pg95\bin;C:\Program Files\PostgreSQL\pg95\lib;C:\opt\oracle EAP 6.2\ojdbc6.jar;C:\opt\apache-tomcat-8.5.31\bin;C:\Program Files (x86)\cvsnt;C:\opt\apache-ant-1.9.11\bin;C:\Program Files\TortoiseGit\bin;C:\WINDOWS\System32\OpenSSH;C:\Users\MKHN\AppData\Local\Microsoft\WindowsApps;C:\Users\MKHN\AppData\Roaming\npm;C:\opt\python;C:\opt\jdk1.7.0_55-64\jre;C:\opt\jdk1.7.0_55-64;C:\opt\oracle\instantclient_11_2;C:\Program Files\Microsoft VS Code\bin;C:\opt\python\Scripts;C:\opt\flyway;C:\Users\MKHN\AppData\Local\Programs\Microsoft VS Code\bin;
9 verbose lifecycle [email protected]format:check: CWD: D:\farmen\farmen-gui
10 silly lifecycle [email protected]
format:check: Args: [ '/d /s /c',
10 silly lifecycle 'prettier --write --config ./.prettierrc --list-different "src/{app,environments,styles}/**/*{.ts,.json,.scss}"' ]
11 silly lifecycle [email protected]format:check: Returned: code: 2 signal: null
12 info lifecycle [email protected]
format:check: Failed to exec format:check script
13 verbose stack Error: [email protected] format:check: prettier --write --config ./.prettierrc --list-different "src/{app,environments,styles}/**/*{.ts,.json,.scss}"
13 verbose stack Exit status 2
13 verbose stack at EventEmitter. (C:\Users\MKHN\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\index.js:301:16)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at EventEmitter.emit (events.js:214:7)
13 verbose stack at ChildProcess. (C:\Users\MKHN\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at ChildProcess.emit (events.js:214:7)
13 verbose stack at maybeClose (internal/child_process.js:925:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd D:\farmen\farmen-gui
16 verbose Windows_NT 10.0.17763
17 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Users\MKHN\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js" "run" "format:check"
18 verbose node v8.9.1
19 verbose npm v6.9.0
20 error code ELIFECYCLE
21 error errno 2
22 error [email protected] format:check: prettier --write --config ./.prettierrc --list-different "src/{app,environments,styles}/**/*{.ts,.json,.scss}"
22 error Exit status 2
23 error Failed at the [email protected] format:check script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 2, true ]

Problem with using tinymce

when I add tinymce to project
everything is woking fine without ssr

when I run " npm run ssr "
I get this error

`
TypeError: Cannot read property 'split' of undefined
at zw.toAbsPath (webpack:///./node_modules/tinymce/tinymce.min.js?:2:336063)

at new zw (webpack:///./node_modules/tinymce/tinymce.min.js?:2:334212)
at zw.toAbsolute (webpack:///./node_modules/tinymce/tinymce.min.js?:2:335336

)
`

in package.json

"angular2-tinymce": "^3.3.0", "tinymce": "^4.7.13",

Error with dynamic import and lazy loading

Hi,
I need to load some modules in the following way but its giving me an error "Dynamic import is only supported when '--module' flag is 'commonjs' or 'esNext'." can you check and share a working sample ?

{
path: '',
component: WrapperComponent,
canActivateChild: [MetaGuard],
children: [{
path: 'home', loadChildren: () = {
//I need to write some logic here to decide which module it should load, for now i am simply returning the below.
return import('./home/home.module').then(mod => mod.HomeModule)
}

},

Problem with production mode. error from terser

when in webpack.config I set up production mode and run "build: prerender", an error is thrown out

ERROR in prerender.js from Terser
Unexpected token: punc (.) [Prerender.js: 91750,10]

ERROR in server.js from Terser
Unexpected token: punc (.) [Server.js: 153477,10]

installing "terser": "3.14.1" does not help.

Support Fontawesome 5

It seems angular ssr doesn't support fontawesome 5. I try to test on csr successfully but not in ssr. It throws an error named: 'fa-icon' is not Angular component.

Can anyone help me?
Thanks

ERROR { Error: Uncaught (in promise): ReferenceError: FormData is not defined

Hello I want to render my angular app with Universal to optimise my SEO.
After following all the steps on serving it I got

GET: /: 43.040ms
ERROR { Error: Uncaught (in promise): ReferenceError: FormData is not defined
ReferenceError: FormData is not defined
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:139851:333702)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46)
    at resolvePromise (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136781:31)
    at resolvePromise (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136738:17)
    at C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136840:17
    at ZoneDelegate.invokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136378:31)
    at Object.onInvokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:10539:33)
    at ZoneDelegate.invokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136377:36)
    at Zone.runTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136145:47)
    at drainMicroTaskQueue (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136552:35)
    at ZoneTask.invokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136457:21)
    at Server.ZoneTask.invoke (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136442:48)
  rejection: ReferenceError: FormData is not defined
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:139851:333702)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46),
  promise:
   ZoneAwarePromise {
     __zone_symbol__state: 0,
     __zone_symbol__value: ReferenceError: FormData is not defined
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:139851:333702)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46) },
  zone:
   Zone {
     _properties: { isAngularZone: true },
     _parent:
      Zone {
        _properties: {},
        _parent: null,
        _name: '<root>',
        _zoneDelegate: [Object] },
     _name: 'angular',
     _zoneDelegate:
      ZoneDelegate {
        _taskCounts: [Object],
        zone: [Circular],
        _parentDelegate: [Object],
        _forkZS: null,
        _forkDlgt: null,
        _forkCurrZone: [Object],
        _interceptZS: null,
        _interceptDlgt: null,
        _interceptCurrZone: [Object],
        _invokeZS: [Object],
        _invokeDlgt: [Object],
        _invokeCurrZone: [Circular],
        _handleErrorZS: [Object],
        _handleErrorDlgt: [Object],
        _handleErrorCurrZone: [Circular],
        _scheduleTaskZS: [Object],
        _scheduleTaskDlgt: [Object],
        _scheduleTaskCurrZone: [Circular],
        _invokeTaskZS: [Object],
        _invokeTaskDlgt: [Object],
        _invokeTaskCurrZone: [Circular],
        _cancelTaskZS: [Object],
        _cancelTaskDlgt: [Object],
        _cancelTaskCurrZone: [Circular],
        _hasTaskZS: [Object],
        _hasTaskDlgt: [Object],
        _hasTaskDlgtOwner: [Circular],
        _hasTaskCurrZone: [Circular] } },
  task:
   ZoneTask {
     _zone:
      Zone {
        _properties: [Object],
        _parent: [Object],
        _name: 'angular',
        _zoneDelegate: [Object] },
     runCount: 0,
     _zoneDelegates: null,
     _state: 'notScheduled',
     type: 'microTask',
     source: 'Promise.then',
     data:
      ZoneAwarePromise {
        __zone_symbol__state: 0,
        __zone_symbol__value: ReferenceError: FormData is not defined
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:139851:333702)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46) },
     scheduleFn: undefined,
     cancelFn: null,
     callback: [Function],
     invoke: [Function] } }

in my server .ts I inserted global ['FormData'] = null; but it lead to this

GET: /: 31.361ms
ERROR { Error: Uncaught (in promise): TypeError: FormData is not a constructor
TypeError: FormData is not a constructor
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:140046:333698)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46)
    at resolvePromise (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136976:31)
    at resolvePromise (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136933:17)
    at C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:137035:17
    at ZoneDelegate.invokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136573:31)
    at Object.onInvokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:10539:33)
    at ZoneDelegate.invokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136572:36)
    at Zone.runTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136340:47)
    at drainMicroTaskQueue (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136747:35)
    at ZoneTask.invokeTask (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136652:21)
    at Server.ZoneTask.invoke (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:136637:48)
  rejection: TypeError: FormData is not a constructor
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:140046:333698)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46),
  promise:
   ZoneAwarePromise {
     __zone_symbol__state: 0,
     __zone_symbol__value: TypeError: FormData is not a constructor
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:140046:333698)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46) },
  zone:
   Zone {
     _properties: { isAngularZone: true },
     _parent:
      Zone {
        _properties: {},
        _parent: null,
        _name: '<root>',
        _zoneDelegate: [Object] },
     _name: 'angular',
     _zoneDelegate:
      ZoneDelegate {
        _taskCounts: [Object],
        zone: [Circular],
        _parentDelegate: [Object],
        _forkZS: null,
        _forkDlgt: null,
        _forkCurrZone: [Object],
        _interceptZS: null,
        _interceptDlgt: null,
        _interceptCurrZone: [Object],
        _invokeZS: [Object],
        _invokeDlgt: [Object],
        _invokeCurrZone: [Circular],
        _handleErrorZS: [Object],
        _handleErrorDlgt: [Object],
        _handleErrorCurrZone: [Circular],
        _scheduleTaskZS: [Object],
        _scheduleTaskDlgt: [Object],
        _scheduleTaskCurrZone: [Circular],
        _invokeTaskZS: [Object],
        _invokeTaskDlgt: [Object],
        _invokeTaskCurrZone: [Circular],
        _cancelTaskZS: [Object],
        _cancelTaskDlgt: [Object],
        _cancelTaskCurrZone: [Circular],
        _hasTaskZS: [Object],
        _hasTaskDlgt: [Object],
        _hasTaskDlgtOwner: [Circular],
        _hasTaskCurrZone: [Circular] } },
  task:
   ZoneTask {
     _zone:
      Zone {
        _properties: [Object],
        _parent: [Object],
        _name: 'angular',
        _zoneDelegate: [Object] },
     runCount: 0,
     _zoneDelegates: null,
     _state: 'notScheduled',
     type: 'microTask',
     source: 'Promise.then',
     data:
      ZoneAwarePromise {
        __zone_symbol__state: 0,
        __zone_symbol__value: TypeError: FormData is not a constructor
    at new l (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:140046:333698)
    at createClass (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18240:20)
    at createDirectiveInstance (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:18083:37)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19541:53)
    at callViewAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19975:13)
    at execComponentViewsAction (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19884:13)
    at createViewNodes (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19569:5)
    at createRootView (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:19430:5)
    at Object.createProdRootView [as createRootView] (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:20123:12)
    at ComponentFactory_.create (C:\Users\Philippe\Documents\CODE\UniversalRu\epassWebSSR\server.js:17035:46) },
     scheduleFn: undefined,
     cancelFn: null,
     callback: [Function],
     invoke: [Function] } }
  • My environment

  • angular version : 5.2.9

  • OS: Windows

  • Platform:NodeJS

  • What is the expected behavior?

Should access my angular project instead throwing an error and fully use all my features

node prerender.js Chart is not defined

I use Ng2-chart and build ssr return :
Chart is not defined
at eval (webpack:///./node_modules/ng2-charts/fesm5/ng2-charts.js?:1041:15)

How I fix this?

SSR build error with Ivy

Hi, I added Ivy to tsconfig.json

"angularCompilerOptions": { "preserveWhitespaces": true, "enableIvy": true }
And run
ng run start working good, but
ng run ssr
build ok, but on run server error
Unhandled Promise rejection: Cannot read property 'moduleType' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'moduleType' of undefined at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:25230:118) at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:390:26) at Object.onInvoke (webpack:///./node_modules/@angular/core/fesm5/core.js?:24739:33) at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:389:52) at Zone.run (webpack:///./node_modules/zone.js/dist/zone-node.js?:149:43) at NgZone.run (webpack:///./node_modules/@angular/core/fesm5/core.js?:24653:28) at PlatformRef.bootstrapModuleFactory (webpack:///./node_modules/@angular/core/fesm5/core.js?:25229:23) at renderModuleFactory (webpack:///./node_modules/@angular/platform-server/fesm5/platform-server.js?:991:39) at previousRender.then (webpack:///./prerender.ts?:91:91) at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:390:26) TypeError: Cannot read property 'moduleType' of undefined at eval (webpack:///./node_modules/@angular/core/fesm5/core.js?:25230:118) at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:390:26) at Object.onInvoke (webpack:///./node_modules/@angular/core/fesm5/core.js?:24739:33) at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:389:52) at Zone.run (webpack:///./node_modules/zone.js/dist/zone-node.js?:149:43) at NgZone.run (webpack:///./node_modules/@angular/core/fesm5/core.js?:24653:28) at PlatformRef.bootstrapModuleFactory (webpack:///./node_modules/@angular/core/fesm5/core.js?:25229:23) at renderModuleFactory (webpack:///./node_modules/@angular/platform-server/fesm5/platform-server.js?:991:39) at previousRender.then (webpack:///./prerender.ts?:91:91) at ZoneDelegate.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:390:26)

How I can fix this error?

Nodemon error

[nodemon] starting ng serve --aot --open server.js
Schema validation failed with the following errors:
Data path ".builders['app-shell']" should have required property 'class'.
Error: Schema validation failed with the following errors:
Data path ".builders['app-shell']" should have required property 'class'.
at MergeMapSubscriber._registry.compile.pipe.operators_1.concatMap.validatorResult [as project] (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules@angular-devkit\core\src\workspace\workspace.js:210:42)
at MergeMapSubscriber._tryNext (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\operators\mergeMap.js:65:27)
at MergeMapSubscriber._next (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\operators\mergeMap.js:55:18)
at MergeMapSubscriber.Subscriber.next (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\Subscriber.js:64:18)
at MergeMapSubscriber.notifyNext (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\operators\mergeMap.js:84:26)
at InnerSubscriber._next (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\InnerSubscriber.js:25:21)
at InnerSubscriber.Subscriber.next (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\Subscriber.js:64:18)
at MapSubscriber._next (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\operators\map.js:52:26)
at MapSubscriber.Subscriber.next (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\Subscriber.js:64:18)
at SwitchMapSubscriber.notifyNext (C:\Users\MKHN\AppData\Roaming\npm\node_modules@angular\cli\node_modules\rxjs\internal\operators\switchMap.js:77:26)
[nodemon] app crashed - waiting for file changes before starting...

Problem with using typescript in server code

when I want to use type script as server code I get Error

my .ts code


`
import * as express from 'express';

class PostController {
public router;
public path = '/Post';

constructor() {
    this.router = express.Router();
    this.initRoutes();
}

public initRoutes() {
    this.router.get(this.path, this.getPosts);
}

getPosts(request: express.Request, response: express.Response) {
    response.send('Posts list')
}

}

export default PostController;
`

and when I wun " npm run ssr"
I get this error
can you please help me

`
ERROR in ./ServerCode/post.controller.ts 4:11
Module parse failed: Unexpected token (4:11)
You may need an appropriate loader to handle this file type, currently no loader
s are configured to process this file. See https://webpack.js.org/concepts#loade
rs
|
| class PostController {

public router;

| public path = '/Post';
|
@ ./server.ts 73:0-57 74:21-35
`

Error: Cannot match any routes. URL Segment: 'static/back'

Any ideas of how to fix this:

ERROR { Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'static/back'
Error: Cannot match any routes. URL Segment: 'static/back'

Got this error after i run: npm run ssr

Thanks!

Error after "npm run ssr" - Can't set headers after they are sent.

Hi, I have a problem launching the project with "npm run ssr" just after git clone project and npm install.
I haven't changed anything.

ORIGIN_URL=http://localhost:4000
[email protected] server /home/lenovo/Documents/tmp/unistarter
node server.js
listening on http://localhost:4000!
GET: /home: 113.256ms
Error: Can't set headers after they are sent.
at SendStream.headersAlreadySent (/home/lenovo/Documents/tmp/unistarter/node_modules/send/index.js:390:13)
at SendStream.send (/home/lenovo/Documents/tmp/unistarter/node_modules/send/index.js:618:10)
at onstat (/home/lenovo/Documents/tmp/unistarter/node_modules/send/index.js:730:10)
at ZoneDelegate.invokeTask (/home/lenovo/Documents/tmp/unistarter/node_modules/zone.js/dist/zone-node.js:421:31)
at Zone.runTask (/home/lenovo/Documents/tmp/unistarter/node_modules/zone.js/dist/zone-node.js:188:47)
at ZoneTask.invokeTask (/home/lenovo/Documents/tmp/unistarter/node_modules/zone.js/dist/zone-node.js:496:34)
at ZoneTask.invoke (/home/lenovo/Documents/tmp/unistarter/node_modules/zone.js/dist/zone-node.js:485:48)
at data.args.(anonymous function) (/home/lenovo/Documents/tmp/unistarter/node_modules/zone.js/dist/zone-node.js:1317:25)
at FSReqWrap.oncomplete (fs.js:153:5)

My config is:
Ubuntu 16.04
Node v8.11.3
Npm 5.6.0

Совместная работа Translate и Meta

На данный момент meta данные всегда заполняются на одном языке ("захардкожены") и не меняются при смене языка, а значит о нормальном SEO можно даже не говорить.

Нужно сделать так, чтобы в роутинге в data.meta были прописаны "title" и "description" определяющим свойством перевода, к примеру:
meta: { title: 'HOME.TITLE', description: 'HOME.DESC' }

При загрузке приложения определять язык который используется у пользователя и применять его. Чтобы интерфейс и meta данные заполнялись информацией согласно выставленному языку.
При смене языка из интерфейса, как минимум необходимо, чтобы так же изменялся "title"

Firebase hosting

Need to host the application using firebase hosting provider, how to setup in firebase hosting for this starter?

Thank you for great work

I want to say 'thank you' for this project, it is awesome. I checked it out few days ago and I think that you create something wonderful.

but :) I have one question: how to use server-environments, and render component server-mock ?

Thank you again for great solution 💯

Transferhttp is not wokring

I am using transferHttpService in apiService and subscribing it from ngOnInit.
My SSR is not waiting for service to complete and source is coming without the code.

buildOptimizer problem

Hi
There is an intermittent problem with buildOptimizer config on angular.json file. When I make it true, and push my repo to aws by prerendering, it generates a url. The web site works for me but for some developers, it does not. In addition, I clean all my cache and hard reset my browser, it still works for me but for some others doesn't. I really don't know how to figure out what is the problem. Can you help ?

Есть идеи по развитию серверной части с Nest.js?

Интересно было бы увидеть реализацию не на Express.js, а на модульном фреймворке Nest.js.
Посмотреть на: проблемы, идеи, реализации, костыли, патчи (все что было необходимо для интеграции).

Module not found: Error: Can't resolve '.'

I get the following error when building the project.

ERROR in ./dist-server/main.54d14887e93771cd2a49.bundle.js
Module not found: Error: Can't resolve '.' in 'C:\Users\Loqman\OneDrive\programming\with universal starter\dist-server'
@ ./dist-server/main.54d14887e93771cd2a49.bundle.js 1:614175-614187
@ ./dist-server ^./main..*.bundle$
@ ./server.ts

Where i should import my custom libraries?

Im trying to import my custom libraries and is saying all the time. No provider for 'X'.

My library is using some dependencies and modules like ngx-translate, ngx-utils/cookies...

Where i should import to use it?

No provider for ORIGIN_URL

Just downloaded the project and run npm run build:prerender

Getting this error:


> [email protected] build:prerender C:\Users\Asad\dev\angular-universal-starter
> npm run build:universal && npm run generate:prerender


> [email protected] build:universal C:\Users\Asad\dev\angular-universal-starter
> ng build --prod && ng build --prod --app 1 && webpack --progress --colors

Date: 2017-12-20T22:52:54.083Z
Hash: cecbb91e3052017c795d
Time: 25576ms
chunk {0} 0.e75f5d2936d757b487a2.chunk.js () 2.19 kB  [rendered]
chunk {1} 1.5b90f194905b0bf2a04d.chunk.js () 2.04 kB  [rendered]
chunk {2} 2.e2f0158643a96b8ec76a.chunk.js () 1.38 kB  [rendered]
chunk {3} polyfills.679a60ec87f0920e9e75.bundle.js (polyfills) 65.6 kB [initial] [rendered]
chunk {4} main.4f7db7641c744554fa2a.bundle.js (main) 377 kB [initial] [rendered]
chunk {5} styles.d41d8cd98f00b204e980.bundle.css (styles) 0 bytes [initial] [rendered]
chunk {6} inline.3ff0641c92ccc4218a55.bundle.js (inline) 1.52 kB [entry] [rendered]
Date: 2017-12-20T22:53:02.164Z
Hash: ba586c625d49e8b26495
Time: 5531ms
chunk {0} main.8e71a9c5d78f523d505e.bundle.js (main) 26.4 kB [entry] [rendered]
chunk {1} styles.d41d8cd98f00b204e980.bundle.css (styles) 0 bytes [entry] [rendered]
Hash: 2114cc80462b683457f9
Version: webpack 3.10.0
Time: 2688ms
       Asset     Size  Chunks                    Chunk Names
   server.js  5.04 MB       0  [emitted]  [big]  server
prerender.js  4.32 MB       1  [emitted]  [big]  prerender
  [90] ./src lazy 160 bytes {0} {1} [built]
 [145] ./dist-server ^\.\/main\..*\.bundle$ 199 bytes {0} {1} [built]
 [146] ./dist-server/main.8e71a9c5d78f523d505e.bundle.js 26.4 kB {0} {1} [optional] [built]
 [228] ./server.ts 3.73 kB {0} [built]
 [278] ./src 160 bytes {0} [built]
 [284] (webpack)/buildin/module.js 517 bytes {0} [built]
 [297] ./prerender.ts 2.94 kB {1} [built]
 [298] ./static.paths.ts 49 bytes {1} [built]
    + 291 hidden modules

> [email protected] generate:prerender C:\Users\Asad\dev\angular-universal-starter
> node prerender.js

ERROR { Error: Uncaught (in promise): Error: StaticInjectorError[ORIGIN_URL]:
  StaticInjectorError[ORIGIN_URL]:
    NullInjectorError: No provider for ORIGIN_URL!
Error: StaticInjectorError[ORIGIN_URL]:
  StaticInjectorError[ORIGIN_URL]:
    NullInjectorError: No provider for ORIGIN_URL!
    at _NullInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1655:19)
    at resolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1943:24)
    at tryResolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1885:16)
    at StaticInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1756:20)
    at resolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1943:24)
    at tryResolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1885:16)
    at StaticInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1756:20)
    at resolveNgModuleDep (C:\Users\Asad\dev\angular-universal-starter\prerender.js:11545:25)
    at NgModuleRef_.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:12773:16)
    at resolveNgModuleDep (C:\Users\Asad\dev\angular-universal-starter\prerender.js:11545:25)
    at resolvePromise (C:\Users\Asad\dev\angular-universal-starter\prerender.js:107893:31)
    at resolvePromise (C:\Users\Asad\dev\angular-universal-starter\prerender.js:107864:17)
    at C:\Users\Asad\dev\angular-universal-starter\prerender.js:107942:17
    at ZoneDelegate.invokeTask (C:\Users\Asad\dev\angular-universal-starter\prerender.js:107494:31)
    at Object.onInvokeTask (C:\Users\Asad\dev\angular-universal-starter\prerender.js:5409:33)
    at ZoneDelegate.invokeTask (C:\Users\Asad\dev\angular-universal-starter\prerender.js:107493:36)
    at Zone.runTask (C:\Users\Asad\dev\angular-universal-starter\prerender.js:107261:47)
    at drainMicroTaskQueue (C:\Users\Asad\dev\angular-universal-starter\prerender.js:107671:35)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
  rejection:
   { Error: StaticInjectorError[ORIGIN_URL]:
  StaticInjectorError[ORIGIN_URL]:
    NullInjectorError: No provider for ORIGIN_URL!
    at _NullInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1655:19)
    at resolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1943:24)
    at tryResolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1885:16)
    at StaticInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1756:20)
    at resolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1943:24)
    at tryResolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1885:16)
    at StaticInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1756:20)
    at resolveNgModuleDep (C:\Users\Asad\dev\angular-universal-starter\prerender.js:11545:25)
    at NgModuleRef_.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:12773:16)
    at resolveNgModuleDep (C:\Users\Asad\dev\angular-universal-starter\prerender.js:11545:25)
     ngTempTokenPath: null,
     ngTokenPath: [ 'ORIGIN_URL' ],
     __zone_symbol__currentTask:
      ZoneTask {
        _zone: [Object],
        runCount: 0,
        _zoneDelegates: null,
        _state: 'notScheduled',
        type: 'microTask',
        source: 'Promise.then',
        data: undefined,
        scheduleFn: undefined,
        cancelFn: null,
        callback: [Function],
        invoke: [Function] } },
  promise:
   ZoneAwarePromise {
     __zone_symbol__state: 0,
     __zone_symbol__value:
      { Error: StaticInjectorError[ORIGIN_URL]:
  StaticInjectorError[ORIGIN_URL]:
    NullInjectorError: No provider for ORIGIN_URL!
    at _NullInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1655:19)
    at resolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1943:24)
    at tryResolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1885:16)
    at StaticInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1756:20)
    at resolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1943:24)
    at tryResolveToken (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1885:16)
    at StaticInjector.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:1756:20)
    at resolveNgModuleDep (C:\Users\Asad\dev\angular-universal-starter\prerender.js:11545:25)
    at NgModuleRef_.get (C:\Users\Asad\dev\angular-universal-starter\prerender.js:12773:16)
    at resolveNgModuleDep (C:\Users\Asad\dev\angular-universal-starter\prerender.js:11545:25)
        ngTempTokenPath: null,
        ngTokenPath: [Array],
        __zone_symbol__currentTask: [Object] } },
  zone:
   Zone {
     _properties: { isAngularZone: true },
     _parent:
      Zone {
        _properties: {},
        _parent: null,
        _name: '<root>',
        _zoneDelegate: [Object] },
     _name: 'angular',
     _zoneDelegate:
      ZoneDelegate {
        _taskCounts: [Object],
        zone: [Circular],
        _parentDelegate: [Object],
        _forkZS: null,
        _forkDlgt: null,
        _forkCurrZone: [Object],
        _interceptZS: null,
        _interceptDlgt: null,
        _interceptCurrZone: [Object],
        _invokeZS: [Object],
        _invokeDlgt: [Object],
        _invokeCurrZone: [Circular],
        _handleErrorZS: [Object],
        _handleErrorDlgt: [Object],
        _handleErrorCurrZone: [Circular],
        _scheduleTaskZS: [Object],
        _scheduleTaskDlgt: [Object],
        _scheduleTaskCurrZone: [Circular],
        _invokeTaskZS: [Object],
        _invokeTaskDlgt: [Object],
        _invokeTaskCurrZone: [Circular],
        _cancelTaskZS: [Object],
        _cancelTaskDlgt: [Object],
        _cancelTaskCurrZone: [Circular],
        _hasTaskZS: [Object],
        _hasTaskDlgt: [Object],
        _hasTaskDlgtOwner: [Circular],
        _hasTaskCurrZone: [Circular] } },
  task:
   ZoneTask {
     _zone:
      Zone {
        _properties: [Object],
        _parent: [Object],
        _name: 'angular',
        _zoneDelegate: [Object] },
     runCount: 0,
     _zoneDelegates: null,
     _state: 'notScheduled',
     type: 'microTask',
     source: 'Promise.then',
     data: undefined,
     scheduleFn: undefined,
     cancelFn: null,
     callback: [Function],
     invoke: [Function] } }

I am using windows 10.

I am working in an another node-angular-ssr project and having exact error with url, in my case I have named it "BASE_URL", but it fails during prerender generation phase. Wondering if there is an environment related issue going on here.

How to use this (in my opinion)

git clone => npm i => npm run start =

ERROR in src/app/shared/layouts/toolbar/toolbar.component.ts(3,10): error TS2305: Module '"E:/tmp/angular-universal-starter-master/src/app/shared/translates/index"' has no exported member 'TranslatesService'.
src/app/shared/layouts/toolbar/toolbar.component.ts(3,29): error TS2305: Module '"E:/tmp/angular-universal-starter-master/src/app/shared/translates/index"' has no exported member 'ITranslatesLanguage'.
src/app/shared/translates/index.ts(1,40): error TS2307: Cannot find module './translates-server.module'.

[Hmmm... Nice starter, i like it!]
cd .. => rm -rf an[Tab][Enter]

Error SharedMetaModule

The scenario:

  • I want to use custom pipes in other modules
  • Pipes import and export in SharedModule => other modules can not found pipes since we import SharedModule.forRoot() in AppModule
  • Next I remove forRoot(), import SharedModule to some other modules,
    it causes error MetaModule import once more times.

Should web import SharedMetaModule in AppModule instead?

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.