我启用了通用渲染的Angular 5.2应用程序(主要根据this article实现)。一切都适用于我的本地环境,但当我尝试在docker中构建应用程序时,它会因此错误而失败:
$ node --max-old-space-size=4096 ./node_modules/.bin/webpack -p
/app/node_modules/typescript/lib/typescript.js:91633
return program.getOptionsDiagnostics(cancellationToken).concat(program.getGlobalDiagnostics(cancellationToken));
^
TypeError: Cannot read property 'getOptionsDiagnostics' of undefined
at Object.getCompilerOptionsDiagnostics (/app/node_modules/typescript/lib/typescript.js:91633:28)
at provideCompilerOptionDiagnosticErrorsToWebpack (/app/node_modules/ts-loader/dist/after-compile.js:39:29)
at Compiler.<anonymous> (/app/node_modules/ts-loader/dist/after-compile.js:17:9)
at next (/app/node_modules/tapable/lib/Tapable.js:204:14)
at Compiler.<anonymous> (/app/node_modules/webpack/lib/CachePlugin.js:78:5)
...
我尝试使用node:carbon
图片和ubuntu:16.04
+通过node
安装apt
进行构建,两张图片都出现相同的错误。
此错误是在构建的最后阶段引起的,我使用webpack构建服务器应用程序($ node --max-old-space-size=4096 ./node_modules/.bin/webpack -p
)。
我使用webpack 3.11,使用此配置:
const path = require('path');
const nodeExternals = require('webpack-node-externals');
module.exports = {
entry: {
server: './src/server.ts',
},
resolve: {
extensions: ['.ts', '.js'],
alias: {
'main.server': path.join(__dirname, 'dist', 'server', 'main.bundle.js'),
},
},
target: 'node',
externals: [nodeExternals({
whitelist: [
/^@ng-bootstrap\/ng-bootstrap/,
/ngx-translate-messageformat-compiler/,
],
})],
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js',
},
module: {
rules: [
{ test: /\.ts$/, loader: 'ts-loader' },
],
},
};
答案 0 :(得分:2)
我自己找到了一个解决方案,在webpack配置中启用了transpileOnly
的{{1}}选项,这个错误神奇地消失了。在这种情况下,代码已经过类型检查,因此无论如何都不需要。
ts-loader