发生未处理的异常:工作区中没有设置“production”配置。

10

你好,我在 Angular 8 中创建了一个项目。一开始只支持默认语言(美式英语)。然后我加入了本地化。

在本地化之前,我用以下命令来准备生产构建。

ng build --prod --base-href "/Windchill/com/qiwkCollaborator/"

在本地化后,我对angular.json和package.json进行了一些更改。在做出这些更改之后,无论我给出什么命令来准备构建,它都会给我以下错误。
An unhandled exception occurred: Configuration 'production' is not set in the workspace.

Package.json文件的一部分如下:

"name": "qwik-collaborator",
  "version": "1.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "build-locale:en": "ng build --prod --i18n-locale en --i18n-format xlf --i18n-file src/translate/messages.en.xlf --output-path=dist/en --baseHref /en/",
    "build-locale:fr": "ng build --prod --i18n-locale fr --i18n-format xlf --i18n-file src/translate/messages.fr.xlf --output-path=dist/fr --baseHref /fr/"

Angular.json文件的一部分内容如下。

"build": {

          "configurations": {
            "fr": {
            "aot": true,
            "outputPath": "dist/qwikCollaborator/fr/",
            "i18nFile": "src/translate/messages.fr.xlf",      
            "i18nFormat": "xlf",      
            "i18nLocale": "fr",      
            "i18nMissingTranslation": "error"    
             },
             "en": {
            "aot": true,
            "outputPath": "dist/qwikCollaborator/en/",
            "i18nFile": "src/translate/messages.en.xlf",      
            "i18nFormat": "xlf",      
            "i18nLocale": "en",      
            "i18nMissingTranslation": "error"    
             }  
           },
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/qwikCollaborator",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "aot": false,
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss",
              "src/assets/css/custom-mobile.css",
              "src/assets/css/custom.css"
            ],
            "scripts": [
              "node_modules/jquery/dist/jquery.min.js",
              "src/assets/js/qwikCollaborator.js"
            ]
          },
          "configurations": {
          "es5": {
        "tsConfig": "./tsconfig.es5.json"
      },
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
.......


"serve": {
           "configurations": {
            "fr": {
            "browserTarget": "qwikCollaborator:build:fr" 
            },
            "en": {
            "browserTarget": "qwikCollaborator:build:en" 
            } ,
            },
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "qwikCollaborator:build"
          },

          "configurations": {
          "es5": {
        "browserTarget": "qwikCollaborator:build:es5"
      },
            "production": {
              "browserTarget": "qwikCollaborator:build:es5"
            }
          }
        },

有谁能帮我解决这个问题吗?

1个回答

12

你正在使用 --prod 参数进行构建,这意味着要使用 production 配置,但显然你已经删除了该配置。

你需要更改你的构建脚本为:

"build-locale:en": "ng build -c en --output-path=dist/en --baseHref /en/",
"build-locale:fr": "ng build -c fr --output-path=dist/fr --baseHref /fr/"

angular.json 中指定的选项(如文件 i18n 文件格式和位置)不需要在构建命令中再次指定。

如果你想像以前一样使用 ng build --prod 进行构建,你只需要将 production 配置添加回 build 目标即可。


我尝试使用上述方法,但部署到服务器端后出现错误“ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment:”,您能否请检查在哪里需要做出更改? - Jayesh Vyas
那是一个不同的问题,但你可能需要修改你的nginx(或其他web服务器)规则,根据请求的url重定向到正确的bundle。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接