Javascript (三);Angular Universal无法在具有--prod的服务器上使environment.production为true

Javascript (三);Angular Universal无法在具有--prod的服务器上使environment.production为true,javascript,angular,typescript,angular-cli,angular-universal,Javascript,Angular,Typescript,Angular Cli,Angular Universal,我使用Universal Starter设置我的web应用程序,并尝试使用environment.production在生产配置和开发配置之间切换。/src/config/server.config.ts,但该值始终为false。当我检查延迟加载路由中的值时,该值是正确的。我该怎么做才能使它成为正确的值服务器端 感谢您的帮助。谢谢我想您需要了解如何在npm脚本中配置Web包和创建环境。您可以根据您的网页包配置设置环境。使用webpack merge,您可以拥有多个配置包,通过将每个配置包设置为您

我使用Universal Starter设置我的web应用程序,并尝试使用environment.production在生产配置和开发配置之间切换。/src/config/server.config.ts,但该值始终为false。当我检查延迟加载路由中的值时,该值是正确的。我该怎么做才能使它成为正确的值服务器端


感谢您的帮助。谢谢

我想您需要了解如何在npm脚本中配置Web包和创建环境。您可以根据您的网页包配置设置环境。使用webpack merge,您可以拥有多个配置包,通过将每个配置包设置为您定义的值,您可以在npm脚本中使用webpack merge进行前后交换。请参阅下面的链接


我认为原因是,在webpack.server.config.js中,模式设置为“无”,不这样做会在构建ssr时出错,因此环境未设置为“生产”

我现在正在实现的解决方案是在服务器构建(angular.json)中使用fileReplacements设置一个新配置:

然后在package.json中,我在构建ssr时添加了该配置:

    "build:client-and-server-bundles": "ng build --prod && ng run my-app:server --configuration=mynewconfig",

这适用于Angular>6,对于以前的版本,您可以使用--env标志而不是--configuration。

或者您可以在web配置中使用mode:development或mode:production设置环境。如果您在webpack.server.config.js中将模式设置为production,则会出现错误,这就是为什么至少目前在Angular ssr中设置为“无”模式的原因,所以我猜这必须使用env variables来完成。这将正确的环境插入到/dist/server/main.js文件中,而不是插入到/dist/server.js文件中
    "build:client-and-server-bundles": "ng build --prod && ng run my-app:server --configuration=mynewconfig",