Angular CLI & Angular Universal 无法使用 --prod 在服务器上使 environment.production 为真

Angular CLI & Angular Universal cannot get environment.production to be true on server with --prod

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

感谢任何帮助。谢谢

我想你想要一些关于如何配置 webpack 和在你的 npm 脚本中创建你的环境的东西。您可以根据您的 webpack 配置设置环境。使用 webpack-merge 你可以拥有多个配置包,通过将每个配置包设置为你定义的值,你可以在你的 npm 脚本中使用 webpack-merge 来回交换。参考下面的link。

https://webpack.js.org/guides/production/

我觉得是因为在webpack.server.config.js中模式设置为'none',不这样做会在构建ssr时出错,所以环境没有设置为'production'.

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

      "server": {
      "builder": "@angular-devkit/build-angular:server",
      "options": {
        "outputPath": "dist/server",
        "main": "src/main.server.ts",
        "tsConfig": "src/tsconfig.server.json"
      },
      "configurations": {
        "mynewconfig": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ]
      }

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

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

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