Angular 8网页包AOT生成失败-无法读取未定义的属性“map”

Angular 8网页包AOT生成失败-无法读取未定义的属性“map”,angular,webpack,html-webpack-plugin,aot,Angular,Webpack,Html Webpack Plugin,Aot,错误消息是html网页包插件错误 此错误仅在捆绑生产时出现 当@ngtools/webpack被angular路由器加载器、angular2模板加载器和awesome typescript加载器替换时,应用程序绑定正确 环境 角度8, 第4页, html网页包插件3.2.0, 打字稿:3.7.5 密码 const path=requirepath const webpack=requirewebpack const HtmlWebpackPlugin=requirehtml网页包插件 cons

错误消息是html网页包插件错误

此错误仅在捆绑生产时出现

当@ngtools/webpack被angular路由器加载器、angular2模板加载器和awesome typescript加载器替换时,应用程序绑定正确

环境 角度8, 第4页, html网页包插件3.2.0, 打字稿:3.7.5

密码 const path=requirepath const webpack=requirewebpack const HtmlWebpackPlugin=requirehtml网页包插件 const MiniCssExtractPlugin=requiremini css提取插件 const optimizecssassetstplugin=require优化css资产网页包插件 const UglifyJSPlugin=requireuglifyjs网页包插件 const CompressionPlugin=requirecompression网页包插件 const BrotliPlugin=requirebrotli网页包插件 警察AngularCompilerPlugin=require@ngtools/webpack.AngularCompilerPlugin const{CleanWebpackPlugin}=requireclean webpack插件 const isProd=process.env.NODE_env==生产 module.exports={ 条目:{ polyfills:“./src/polyfills”, 供应商:'./src/供应商', main:[/src/main.prod] }, 决心:{ 扩展:[.js、.ts、.json] }, 方式:生产,, 输出:{ 文件名:[name]-bundle.js, 路径:path.resolve\uuu dirname,../dist, 公共路径:/, chunkFilename:[id].chunk.js, }, 优化:{ 诺伊米恐怖分子:没错, 分割块:{ 区块:“全部” }, runtimeChunk:'single' }, devtool:'源映射', 模块:{ 规则:[ { 测试:/?:\.ngfactory\.js\.ngstyle\.js\.ts$/, 加载器:@ngtools/webpack, //使用:[ // { //加载器:@ngtools/webpack // } // ], 排除:/node\u模块/ }, { 测试:/\.html$/,, 使用:[ { 加载程序:html加载程序, 选项:{ 属性:[img:src,link:href] } } ] }, { 测试:/\.css$/,, 使用:[ {loader:to string loader}, {loader:MiniCssExtractPlugin.loader}, { 加载器:css加载器 } ], 排除:/\.component\.css$/ }, { 测试:/\.css$/,, 使用:[ {loader:to string loader}, {loader:MiniCssExtractPlugin.loader}, { 加载器:css加载器 } ], 包括:/\.component\.css$/ }, { 测试:/\.png | jpe?g | gif | svg | woff | woff2 | ttf | eot$/, 使用:[ { 加载器:文件加载器, 选项:{ 名称:资产/images/[name].[ext] } } ] }, { 测试:/\.ico$/,, 使用:[ { 加载器:文件加载器, 选项:{ 姓名:[姓名].[ext] } } ] }, ] }, 插件:[ 新的OptimizeCssAssetsPlugin{ cssProcessor:cssnano, cssProcessorOptions:{ 评论:{ removeAll:是的 } }, canPrint:false }, 新的MinicsSextract插件{ 文件名:[name]-[contenthash].css }, 新建webpack.ContextReplacementPlugin /角度\\\\\\\/core/, path.join\uu dirname,./src, {} , 新HtmlWebpackPlugin{ 模板:“src/index.html” }, 新网页。NoEmitOnErrorsPlugin, 新的webpack.DefinePlugin{ “process.env”:{ NODE_ENV:JSON.stringifyproduction } }, 新的UglifyJSPlugin{ 是的, 平行:对 }, 新压缩插件{ 算法:gzip }, 新布罗特利普卢金, 新的CleanWebpackPlugin, 新角鲨{ tsconfig路径:'./tsconfig.prod.json', entryModule:path.join\uu目录名,src/app/app.moduleAppModule } ]
} 在我的例子中,发生了一个与此非常类似的错误,因为我将CopyWebpackPlugin声明为:

new CopyWebpackPlugin([{
  patterns: [{
     ...
  }]
}])
与此相反:

new CopyWebpackPlugin({
  patterns: [{
     ...
  }]
})
那些额外的括号就是问题所在。

在我的例子中,一个er ror与此非常相似,因为我将CopyWebpackPlugin声明为:

new CopyWebpackPlugin([{
  patterns: [{
     ...
  }]
}])
与此相反:

new CopyWebpackPlugin({
  patterns: [{
     ...
  }]
})

这些额外的括号就是问题所在。

当我从webpack@3到一个新版本。 在我的例子中,当我试图在React项目中运行npm run build时,无法读取undefined的属性“name”中的错误

这个问题是由webpack parallel uglify插件引起的,该插件在中被弃用webpack@4配置,并在生产模式中用作默认值。 这是文件:

解决办法是删除:

new ParallelUglifyPlugin({})
从webpack.config.js初始化


GL HF:

当我从webpack@3到一个新版本。 在我的例子中,当我试图在React项目中运行npm run build时,无法读取undefined的属性“name”中的错误

这个问题是由webpack parallel uglify插件引起的,该插件在中被弃用webpack@4配置,并在生产模式中用作默认值。 这是文件:

解决办法是删除:

new ParallelUglifyPlugin({})
从webpack.config.js初始化


GL HF:

您是否正在尝试使用.map。。。在html中?@Z.Bagley映射与数组一起使用示例array.mapx=>{},与typescript相反,它贯穿于实际html模板中的项目。如果您正在尝试AOT构建,您将需要重构html中使用的大多数第三方方法,并将它们通过ts组件中的代理方法放置。示例:*ngIf=color.mapx=>x.red to*ngIf=mappedColorcolor和mappedColorcolor:color{return color.mapx=>x.red}否,映射未在任何html文件中使用,仅在ts文件中您可能有一个新的CustomClass被声明为w/o。在您的项目中搜索new,并确保它们都是用new CustomClass声明的。此外,如果还没有尝试查找其他错误,可以尝试使用-verbose标志运行它。这里有一个指向AOT编译限制的链接,您需要确保遵守:您是否正在尝试使用.map。。。在html中?@Z.Bagley映射与数组一起使用示例array.mapx=>{},与typescript相反,它贯穿于实际html模板中的项目。如果您正在尝试AOT构建,您将需要重构html中使用的大多数第三方方法,并将它们通过ts组件中的代理方法放置。示例:*ngIf=color.mapx=>x.red to*ngIf=mappedColorcolor和mappedColorcolor:color{return color.mapx=>x.red}否,映射未在任何html文件中使用,仅在ts文件中您可能有一个新的CustomClass被声明为w/o。在您的项目中搜索new,并确保它们都是用new CustomClass声明的。此外,如果还没有尝试查找其他错误,可以尝试使用-verbose标志运行它。这里有一个链接,指向AOT编译的限制,您需要确保遵守:这拯救了我的一天!太神了我永远也想不到,这救了我一天!太神了我永远也想不到这一点。