This repository was archived by the owner on Nov 22, 2024. It is now read-only.
This repository was archived by the owner on Nov 22, 2024. It is now read-only.
Server side error. Promise uncaught? #1063
Closed
Description
Bug Report
What is the expected behavior?
server side to execute http requests and render lazy loaded modules as expected...
i've gone through all my http promises and caught them but the line number references seem
very early on in server.js which is angular code? anyone know whats going on?
server side throws error shown bellow then the client is sent and rendered normally on the client with no errors.
ERROR { Error: Uncaught (in promise): Error
at resolvePromise (root\to\workspace\dist\server.js:1040:31)
at resolvePromise (root\to\workspace\dist\dist\server.js:997:17)
at root\to\workspace\dist\dist\server.js:1099:17
at ZoneDelegate.invokeTask (root\to\workspace\dist\dist\server.js:647:31)
at Object.onInvokeTask (root\to\workspace\dist\dist\server.js:7804:33)
at ZoneDelegate.invokeTask (root\to\workspace\dist\dist\server.js:646:36)
at Zone.runTask root\to\workspace\dist\dist\server.js:414:47)
at drainMicroTaskQueue root\to\workspace\dist\dist\server.js:821:35)
at ZoneTask.invokeTask (root\to\workspace\dist\dist\server.js:726:21)
at Server.ZoneTask.invoke (root\to\workspace\dist\dist\server.js:711:48)
rejection: [Error],
promise: ZoneAwarePromise { __zone_symbol__state: 0, __zone_symbol__value: [Error] },
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: [Error] },
scheduleFn: undefined,
cancelFn: null,
callback: [Function],
invoke: [Function] } }
main.ts
import {enableProdMode} from '@angular/core';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {AppModule} from './app/app.module';
import {environment} from './environments/environment';
if (environment.production) {
enableProdMode();
}
document.addEventListener('DOMContentLoaded', () => {
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.log(err));
});
server.ts
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import {enableProdMode} from '@angular/core';
import * as express from 'express';
import * as csp from 'helmet-csp';
import * as helmet from 'helmet';
import {join} from 'path';
// Express Engine
// Import module map for lazy loading
import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader';
import {ngExpressEngine} from '@nguniversal/express-engine';
import {REQUEST, RESPONSE} from '@nguniversal/express-engine/tokens';
// Faster server renders w/ Prod mode (dev mode never needed)
enableProdMode();
// Express server
const app = express();
const proxy = require('http-proxy-middleware');
// CHANGE FOR DEV (npm run server)
const apiLB = process.env.API_URI || 'http://localhost:4002';
const PORT = process.env.PORT || 4000;
const DIST_FOLDER = join(process.cwd(), 'dist');
// * NOTE :: leave this as require() since this files is built Dynamically from webpack
const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');
app.engine('html', (_, options, callback) =>
ngExpressEngine({
bootstrap: AppServerModuleNgFactory,
providers: [
provideModuleMap(LAZY_MODULE_MAP),
{
provide: REQUEST,
useValue: options.req,
},
{
provide: RESPONSE,
useValue: options.req.res,
},
],
})(_, options, callback)
);
// proxy requests to the api lb for api requests
app.use('/api', proxy({
target: apiLB,
}));
app.set('view engine', 'html');
app.set('views', join(DIST_FOLDER, 'browser'));
app.use(helmet());
app.use(helmet.referrerPolicy({
policy: 'same-origin'
}));
app.disable('x-powered-by');
// Server static files from /browser
app.get('*.*', express.static(join(DIST_FOLDER, 'browser'), {
maxAge: '1y'
}));
// ALl regular routes use the Universal engine
app.get('*', (req, res) => {
res.render('index', {req});
});
// Start up the Node server
app.listen(PORT, () => {
console.log(`Node Express server listening on http://localhost:${PORT}`);
});
it may have something to do with lazy loading?
What modules are related to this issue?
- [ ] aspnetcore-engine
- [ ] common
- [ *] express-engine
- [ ] hapi-engine
- [ *] module-map-ngfactory-loader
Environment:
@nguniversal versions
- express-engine:
- module-map-ngfactory-loader:
Angular CLI: 6.1.5
Node: 8.11.4
OS: win32 x64
Angular: 6.1.6
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, platform-server, router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.7.5
@angular-devkit/build-angular 0.7.5
@angular-devkit/build-optimizer 0.7.5
@angular-devkit/build-webpack 0.7.5
@angular-devkit/core 0.7.5
@angular-devkit/schematics 0.7.5
@angular/cli 6.1.5
@ngtools/webpack 6.1.5
@schematics/angular 0.7.5
@schematics/update 0.7.5
rxjs 6.3.2
typescript 2.9.2
webpack 4.9.2
Windows (10)
Metadata
Metadata
Assignees
Labels
No labels