angular-ru / universal-starter Goto Github PK
View Code? Open in Web Editor NEWAngular 9 Universal repo with many features
Home Page: https://ssr9.gorniv.com
License: MIT License
Angular 9 Universal repo with many features
Home Page: https://ssr9.gorniv.com
License: MIT License
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}!`);
});
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
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.
На данный момент meta данные всегда заполняются на одном языке ("захардкожены") и не меняются при смене языка, а значит о нормальном SEO можно даже не говорить.
Нужно сделать так, чтобы в роутинге в data.meta были прописаны "title" и "description" определяющим свойством перевода, к примеру:
meta: { title: 'HOME.TITLE', description: 'HOME.DESC' }
При загрузке приложения определять язык который используется у пользователя и применять его. Чтобы интерфейс и meta данные заполнялись информацией согласно выставленному языку.
При смене языка из интерфейса, как минимум необходимо, чтобы так же изменялся "title"
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.
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.
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)
}
},
How can i deploy website using yarn build:prerender ?
Привет
спасибо за проект, очень интересно
при 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
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.
and fix test
# npm run ssr:sw
> [email protected] ssr:sw
> ng run universal-demo:server:dev --watch
Unknown option: '--watch'
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?
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?
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]
Hi
How can I publish this angular universal to a windows server ?
thank you
Does it have a place to do support?
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?
Добавить пример использования prerender страниц при запуске node server.js
Add an example of using prerender pages when run node server.js
What about this?
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')
}
}
`
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;
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
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:
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
Need to host the application using firebase hosting provider, how to setup in firebase hosting for this starter?
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 ?
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!
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 💯
Ветка Ionic
Проблемы:
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?
The scenario:
Should web import SharedMetaModule in AppModule instead?
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)
Интересно было бы увидеть реализацию не на Express.js, а на модульном фреймворке Nest.js.
Посмотреть на: проблемы, идеи, реализации, костыли, патчи (все что было необходимо для интеграции).
[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...
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?
Можно работать с socket.io и SSR?
Посмотрел это angular/universal#846
Но так и не понял.
Есть такая ошибка:
в файле server.ts ничего не трогал
подключаюсь по socket.io так:
пробовал убрать явное объявление websockets при подключении
всё-ровно не работает
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.
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
Hi,
Great job done with this starter. Do you plan also to integrate "Google Analytics" vs SSR into it ?
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",
Unable o make a call to
http://www.buzzfeed.com/api/v2/feeds/lol
Same way i have tried for other Url too. How to make a CORS call
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.
Has anyone tried to deploy this using AWS lamda using serverless?
Some lead will be much appreciated.
README.md - английский вариант, для развития стартера на просторах интернета
README-ru.md - для русскоязычных
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]format:check: [email protected]
6 info lifecycle [email protected]
7 verbose lifecycle [email protected]format:check: unsafe-perm in lifecycle trueformat: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;
8 verbose lifecycle [email protected]
9 verbose lifecycle [email protected]format:check: CWD: D:\farmen\farmen-guiformat:check: Args: [ '/d /s /c',
10 silly lifecycle [email protected]
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: nullformat:check: Failed to exec format:check script
12 info lifecycle [email protected]
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 ]
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.