node.js - Angular 通用类型错误: Cannot read property 'assign' of undefined

标签 node.js angular angular-universal

我已经在当前项目中安装了 Angular universall@5.0.0 但是当我启动项目 node server.js 时,它显示错误

>/Users/qfrost/Projects/project/node_modules/rxjs/util/assign.js:22
    return root.Object.assign || assignImpl;
                       ^

**TypeError**: Cannot read property 'assign' of undefined
    at getAssign 

>(/Users/qfrost/Projects/project/node_modules/rxjs/util/assign.js:22:24)
    at Object.<anonymous> (/Users/qfrost/Projects/project/node_modules/rxjs/util/assign.js:25:18)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/qfrost/Projects/project/node_modules/rxjs/observable/dom/WebSocketSubject.js:15:16)

这是我的包裹:

{
  "name": "client",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "build:browser": "ng build --prod --app 0",
    "build:server": "ng build --prod --app 1 --output-hashing none",
    "build": "npm run build:browser && npm run build:server",
    "serve": "node server.js"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^5.2.11",
    "@angular/cdk": "^5.1.1",
    "@angular/common": "^5.0.0",
    "@angular/compiler": "^5.0.0",
    "@angular/core": "^5.0.0",
    "@angular/forms": "^5.0.0",
    "@angular/http": "^5.0.0",
    "@angular/material": "^5.1.1",
    "@angular/platform-browser": "^5.0.0",
    "@angular/platform-browser-dynamic": "^5.0.0",
    "@angular/platform-server": "^6.1.7",
    "@angular/router": "^5.0.0",
    "@ngrx/core": "^1.2.0",
    "@ngrx/store": "^4.1.0",
    "@nguniversal/express-engine": "^5.0.0",
    "@nicky-lenaers/ngx-scroll-to": "^0.6.1",
    "@toverux/ngx-sweetalert2": "^4.0.0",
    "angular-read-more": "^1.0.7",
    "animate-sass": "^0.8.2",
    "bootstrap": "^4.0.0-alpha.6",
    "core-js": "^2.4.1",
    "fullpage.js": "^3.0.2",
    "hammerjs": "^2.0.8",
    "jquery": "^3.3.1",
    "ng2-scroll-to-el": "^1.2.1",
    "ngx-bootstrap": "^2.0.3",
    "ngx-carousel": "^1.3.5",
    "ngx-disqus": "^2.3.7",
    "ngx-fullpage": "^4.0.6",
    "ngx-highlight": "0.0.3",
    "ngx-slick": "^0.1.3",
    "reselect": "^3.0.1",
    "rxjs": "^5.5.2",
    "slick-carousel": "^1.8.1",
    "sweetalert2": "^7.22.2",
    "zone.js": "^0.8.14"
  },
  "devDependencies": {
    "@angular/cli": "1.5.0",
    "@angular/compiler-cli": "^5.0.0",
    "@angular/language-service": "^5.0.0",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/jquery": "^3.3.5",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.2.0",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.2.0",
    "tslint": "~5.7.0",
    "typescript": "~2.4.2"
  }
}

我的server.js

require('zone.js/dist/zone-node');

const domino = require('domino');
const fs = require('fs');
const path = require('path');
const template = fs.readFileSync(path.join(__dirname, '.', 'dist-browser', 'index.html')).toString();
const win = domino.createWindow(template);
global['Event'] = null;
global['window'] = win;

const express = require('express');
const { ngExpressEngine } = require('@nguniversal/express-engine');

// create express app
const app = express();

// import server module bundle
var { ServerAppModuleNgFactory } = require('./dist-server/main.bundle');

// set up engine for .html file
app.engine('html', ngExpressEngine({
    bootstrap: ServerAppModuleNgFactory
}));

app.set('view engine', 'html');
app.set('views', 'dist-browser');

// server static files
app.use(express.static(__dirname + '/dist-browser', { index: false }));

// return rendered index.html on every request
app.get('*', (req, res) => {
    res.render('index', { req, res });
    console.log('new GET request at : ${req.originalUrl}');
});

// start server and listen
app.listen(3000, () => {
    console.log('Angular server started on port 3000');
});

Angular CLI 构建服务器浏览器 版本。但服务器没有启动。我该如何解决这个问题?

最佳答案

您可以执行以下操作:

//
const win = domino.createWindow(template);
win.Object = Object;
global['Event'] = null;
//

关于node.js - Angular 通用类型错误: Cannot read property 'assign' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383788/

相关文章:

javascript - Angular Ionic - 检测 <ion-content> 是否滚动至最大底部

angular - 离线提供静态 Assets ,Angular Universal 中的缓存策略

Angular Universal 预生成页面 : The selector "app-root" did not match any elements

node.js - 如何在 Node 中的 MongoDB 中使用 findOneAndUpdate

javascript - ExpressJS获取post参数以及外部javascript函数的使用

Angular 库 Monorepo : Is it possible to use different versions for every library?

Angular Universal,在带有静态页面的应用程序的 Firebase 上?

node.js - 使用 'forever' 仍然是将 NodeJS 作为 linux/unix 服务运行的建议方法吗?

javascript - 我可以在 app.get 中使用不同路径的 app.use

android - ionic2 流媒体不工作