如何为ngx-bootstrap模态窗口模拟窗口和文档对象

时间:2019-06-14 13:12:12

标签: javascript angular-universal ngx-bootstrap modal-window angular8

我使用Angular 8,Angular Universe,ngx-bootstrap设置服务器端渲染,但出现错误

ERROR ReferenceError:未定义文档     在ModalContainerComponent.ngOnInit(/Users/user/project/dist/server.js:243925:9)     在checkAndUpdateDirectiveInline(/Users/user/project/dist/server.js:23530:19)     在checkAndUpdateNodeInline(/Users/user/project/dist/server.js:31788:20)     在checkAndUpdateNode(/Users/user/project/dist/server.js:31750:16)     在prodCheckAndUpdateNode(/Users/user/project/dist/server.js:32291:5)     在Object.updateDirectives(/Users/user/project/dist/server.js:137344:457)     在Object.updateDirectives(/Users/user/project//server.js:32079:72)     在Object.checkAndUpdateView(/Users/user/project//server.js:31732:14)     在ViewRef_.detectChanges(/Users/user/project//server.js:23119:22)     在ComponentLoader.show(/Users/user/project//server.js:241722:50)

我尝试在服务器文件中使用多米诺骨牌,但没有帮助

"dependencies": {
    "@angular/animations": "^8.0.0",
    "@angular/cdk": "^8.0.0",
    "@angular/common": "^8.0.0",
    "@angular/compiler": "^8.0.0",
    "@angular/core": "^8.0.0",
    "@angular/forms": "^8.0.0",
    "@angular/material": "^8.0.0",
    "@angular/platform-browser": "^8.0.0",
    "@angular/platform-browser-dynamic": "^8.0.0",
    "@angular/platform-server": "^8.0.0",
    "@angular/router": "^8.0.0",
    "@nguniversal/express-engine": "^7.0.2",
    "@nguniversal/module-map-ngfactory-loader": "v7.0.2",
    "@ngx-translate/core": "^10.0.2",
    "@ngx-translate/http-loader": "^3.0.1",
    "@types/lodash": "4.14.108",
    "angular-font-awesome": "3.1.2",
    "bootstrap": "4.1.3",
    "core-js": "^2.4.1",
    "express": "^4.15.2",
    "font-awesome": "4.7.0",
    "lodash": "4.17.4",
    "moment": "2.22.2",
    "ng-recaptcha": "4.2.1",
    "ngx-bootstrap": "5.0.0",
    "rxjs": "^6.5.2",
    "tslib": "^1.9.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.800.0",
    "@angular/cli": "8.0.2",
    "@angular/compiler-cli": "^8.0.0",
    "@angular/language-service": "^8.0.0",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "^6.0.60",
    "codelyzer": "^5.0.1",
    "gulp": "^3.9.1",
    "gulp-sass": "^4.0.1",
    "gulp-watch": "^5.0.0",
    "jasmine-core": "~2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^2.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-loader": "^5.2.0",
    "ts-node": "~4.1.0",
    "tslint": "~5.9.1",
    "tslint-sonarts": "^1.9.0",
    "typescript": "~3.4.5",
    "webpack-bundle-analyzer": "^3.3.2",
    "webpack-cli": "^3.1.0"
  }

server.ts

import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import {enableProdMode} from '@angular/core';
// Express Engine
import {ngExpressEngine} from '@nguniversal/express-engine';
// Import module map for lazy loading
import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader';

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/browser');

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

// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
app.engine('html', ngExpressEngine({
  bootstrap: AppServerModuleNgFactory,
  providers: [
    provideModuleMap(LAZY_MODULE_MAP)
  ]
}));

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

// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Server static files from /browser
app.get('*.*', express.static(DIST_FOLDER, {
  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}`);
});

0 个答案:

没有答案