Angular-cli: Cannot assign to read only property 'stopImmediatePropagation' of object '[object Object]'

Created on 16 Jun 2018  路  9Comments  路  Source: angular/angular-cli

Bug Report or Feature Request (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request

Area

- [x] devkit
- [ ] schematics

Versions

node version v9.8.0
npm version 5.6.0
Linux Ubuntu 16.04

Repro steps

  1. Integrate Angular Universal just like the implementation from https://angular.io/guide/universal , I also checked sample implementation project https://angular.io/generated/zips/universal/universal.zip
  2. npm run build: ssr , works fine
  3. npm run serve:ssr , it runs fine
  4. localhost:4000 from browser , throws this error

The log given by the failure


ERROR TypeError: Cannot assign to read only property 'stopImmediatePropagation' of object '[object Object]'
at DomEventsPlugin.patchEvent (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:84969:50)
at new DomEventsPlugin (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:84956:15)
at /home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:60393:1533
at _callFactory (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13158:28)
at _createProviderInstance$1 (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13104:26)
at resolveNgModuleDep (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13067:21)
at _createClass (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13131:29)
at _createProviderInstance$1 (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13101:26)
at resolveNgModuleDep (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13067:21)
at _createClass (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13137:32)
TypeError: Cannot assign to read only property 'stopImmediatePropagation' of object '[object Object]'
at DomEventsPlugin.patchEvent (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:84969:50)
at new DomEventsPlugin (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:84956:15)
at /home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:60393:1533
at _callFactory (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13158:28)
at _createProviderInstance$1 (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13104:26)
at resolveNgModuleDep (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13067:21)
at _createClass (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13131:29)
at _createProviderInstance$1 (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13101:26)
at resolveNgModuleDep (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13067:21)
at _createClass (/home/kushalgbk/Desktop/savemonk/savemonkWebsite/Savemonk-Mobile-Website-V2.0/dist/server.js:13137:32)

Desired functionality


Anything wrong in server.ts? Am I missing anything from docs? I couldn't anything about this error anywhere.

Mention any other details that might be useful


server.ts
// These are important and needed before anything else
import 'zone.js/dist/zone-node';
import 'reflect-metadata';

import { enableProdMode } from '@angular/core';

import * as express from 'express';
import { join } from 'path';

// Faster server renders w/ Prod mode (dev mode never needed)
enableProdMode();

// Express server
const app = express();

const PORT = process.env.PORT || 4000;
const DIST_FOLDER = join(process.cwd(), 'dist');

// * NOTE :: leave this as require() since this file is built Dynamically from webpack
const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main');

// Express Engine
import { ngExpressEngine } from '@nguniversal/express-engine';
// Import module map for lazy loading
import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';

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

app.set('view engine', 'html');
app.set('views', join(DIST_FOLDER, 'browser'));

// TODO: implement data requests securely
app.get('/api/*', (req, res) => {
res.status(404).send('data requests are not supported');
});

// Server static files from /browser
app.get('.', express.static(join(DIST_FOLDER, 'browser')));

// 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 server listening on http://localhost:${PORT});
});

etmisc

All 9 comments

I see this error too

Same for me

I've 'solved' the issue: took Angular Universal Starter and put my components and stuff there. Now it works.

A lot of headache though half of my development time is getting wasted in managing packages and other stuff that can't be really called development.

@vloginov-pravo Any changes did you notice from the one on official documentation?

I followed Angular Universal Starter project as suggested by @vloginov-pravo . It worked fine.
The official documentation doesn't mention to add ServerTransferStateModule in app.server.module.ts
That made the difference.
I am closing this issue.

Even i followed Angular Universal Starter project as suggested by @vloginov-pravo . i have added my source to it.
It worked fine.

Thanks @vloginov-pravo

as suggested in this tutorial, be sure to import both:

  • ServerTransferStateModule into the server module and
  • BrowserTransferStateModule into the client module
// src/app/app.server.module.ts
import {ServerTransferStateModule} from '@angular/platform-server';
[...]
@NgModule({
  imports: [
    AppModule,
    ServerModule,
    ServerTransferStateModule
  ],
  bootstrap: [AppComponent],
})
export class AppServerModule {}

// src/app/app.module.ts
import { BrowserTransferStateModule } from '@angular/platform-browser';
[...]
@NgModule({
  declarations: [
    AppComponent, CityComponent
  ],
  imports: [
    BrowserModule.withServerTransition({ appId: 'ng-demo-transfer-state-app' }),
    BrowserTransferStateModule,
  [...]

Edit

Also, make sure, your packages are up to date. In my case, I had to upgrade them to:

  "dependencies": {
    "@angular/animations": "^6.1.3",
    "@angular/common": "^6.1.3",
    "@angular/compiler": "^6.1.3",
    "@angular/core": "^6.1.3",
    "@angular/forms": "^6.1.3",
    "@angular/http": "^6.1.3",
    "@angular/platform-browser": "^6.1.3",
    "@angular/platform-browser-dynamic": "^6.1.3",
    "@angular/router": "^6.1.3",
    "rxjs": "^6.2.2"
  },
  "devDependencies": {
    "@angular/cli": "~6.1.4",
    "@angular/compiler-cli": "^6.1.3",
    "@angular/language-service": "^6.1.3",
    "tslint": "~5.9.1",
    "typescript": "~2.9.2",
    "webpack-cli": "^3.1.0"
  }

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

_This action has been performed automatically by a bot._

Was this page helpful?
0 / 5 - 0 ratings

Related issues

hartjo picture hartjo  路  3Comments

hareeshav picture hareeshav  路  3Comments

rajjejosefsson picture rajjejosefsson  路  3Comments

sysmat picture sysmat  路  3Comments

jmurphzyo picture jmurphzyo  路  3Comments