我将使用Angular platform-server
(曾经是Angular 2中的Univeral)
您可能知道,您可以使用ngc
使用AOT编译器编译您的应用程序,但是因为我有一些scss/sass
文件我无法使用它,另一种方法是使用ngtools/webpack
做同样的事情。
不幸的是,没有关于平台服务器的官方文档(服务器端呈现,又名通用),但是我发现了这个正在进行中的文档here,我跟着它,但是当我运行时webpack它不会生成预期的aot
目录。
这是我的网站:
const ngtools = require('@ngtools/webpack');
const webpack = require('webpack');
const path = require('path');
module.exports = {
devtool: 'source-map',
entry: {
main: [
path.join(__dirname, 'src/uni/app-server.module.ts'),
path.join(__dirname, '/src/uni/universal-server.ts')
]
},
resolve: {
extensions: ['.ts', '.js']
},
target: 'node',
output: {
path: path.join(__dirname, '/src/dist'),
filename: 'server.js'
},
plugins: [
new ngtools.AotPlugin({
tsConfigPath: './tsconfig-uni.json',
entryModule: './src/app/app.module#AppModule'
})
],
module: {
rules: [
{
test: /\.scss$/, use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "sass-loader"
}]
},
{test: /\.css$/, loader: 'raw-loader'},
{test: /\.html$/, loader: 'raw-loader'},
{test: /\.ts$/, loader: '@ngtools/webpack'}
]
}
}
这是我的应用程序的打字稿配置:
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"typeRoots": [
"./node_modules/@types/"
]
},
"files": [
"./src/uni/app-server.module.ts",
"./src/uni/universal-server.ts"
],
"angularCompilerOptions": {
"genDir": "aot",
"skipMetadataEmit" : true
}
}
我确实希望返回一些内容并为我生成aot目录!但它失败并返回此错误:
WARNING in ./node_modules/express/lib/view.js
79:29-41 Critical dependency: the request of a dependency is an expression
ERROR in ./src/uni/universal-server.ts
Module not found: Error: Can't resolve '../../aot/src/uni/app-server.module.ngfactory' in '/home//website/src/uni'
@ ./src/uni/universal-server.ts 7:0-89
@ multi ./src/uni/app-server.module.ts ./src/uni/universal-server.ts
ERROR in self is not defined
ERROR in /home/website/src/uni/universal-server.ts (7,40): Cannot find module '../../aot/src/uni/app-server.module.ngfactory'.