2017-08-31 153 views
2

我試圖渲染角通用角上應用+的NodeJS上Expressjs服務器端。在通過ng build --prod --app 1構建應用程序並通過webpack編譯並通過node server.js運行應用程序之後。當我在瀏覽器中得到錯誤打開應用Current document does not have a doctype. This may cause some Angular Material components not to behave as expected.角材料+角通用

// Load zone.js for the server. 
require('zone.js/dist/zone-node'); 
require('reflect-metadata'); 

import * as express from 'express'; 
import { enableProdMode, ValueProvider } from '@angular/core'; 
import { renderModuleFactory } from '@angular/platform-server'; 
import { join } from 'path'; 
import { readFileSync } from 'fs'; 
const { provideModuleMap } = require('@nguniversal/module-map-ngfactory-loader'); 
const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist- 
server/main.bundle'); 

const template = readFileSync('./src/index.html', { encoding: 'utf8' }); 

const app = express(); 

app.engine('html', (_, options, callback) => { 
    const opts = { 
    document: template, 
    url: options.req.url, 
    extraProviders: [ 
     <ValueProvider>{ 
     provide: 'REQUEST', 
     useValue: options.req, 
     }, 
     provideModuleMap(LAZY_MODULE_MAP) 
    ] 
}; 

renderModuleFactory(AppServerModuleNgFactory, opts) 
    .then(html => callback(null, html)); 
}); 

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

app.get('*.*', express.static(join(__dirname, 'dist-server'))); 

app.get('*', (req, res) => { 
    res.render('index', {req}); 
}); 

app.listen(5000,() => { 
    console.log('listening on http://localhost:5000!'); 
}); 

貌似這個錯誤涉及到@角/材料,將被固定在未來,但有什麼解決辦法?

+0

我不認爲這是因爲這樣只是需要被刪除警告的錯誤。我一直沒有發現任何問題與通用和材料2(我有一個參考回購這裏https://github.com/JayChase/ngx-express-universal)。 – JayChase

+0

我也沒有任何問題Angular Universal和M2,我暫時刪除了hammerjs,所以我可以得到一個生產現場 – Cacoon

回答