工作区中未设置 Angular 12 通用配置“开发”

问题描述

我在 Angular 11 上创建了新项目 - 客户端。 然后将 ng 版本更新为 12 Angular。 然后安装通用: ng 添加@nguniversal/express-engine

然后我尝试运行我的 Universal Angular,但它抛出错误

npm run dev:ssr

[email protected] dev:ssr ng 运行客户端:serve-ssr


这是一个简单的服务器,用于在本地测试或调试 Angular 应用程序。 它尚未经过安全问题审核。

请勿将其用于生产!


未在工作区中设置配置“开发”。 npm 错误代码 1 npm 错误!路径 E:\PRACTICE\MYPETPROJECTS\tanechka\client npm 错误!命令失败 npm 错误!命令 C:\WINDOWS\system32\cmd.exe /d /s /c ng run client:serve-ssr

npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! C:\Users\1\AppData\Local\npm-cache_logs\2021-06-08T14_35_07_681Z-debug.log

angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json","version": 1,"newProjectRoot": "projects","projects": {
    "client": {
      "projectType": "application","schematics": {
        "@schematics/angular:component": {
          "style": "scss"
        }
      },"root": "","sourceRoot": "src","prefix": "app","architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser","options": {
            "outputPath": "dist/client/browser","index": "src/index.html","main": "src/main.ts","polyfills": "src/polyfills.ts","tsConfig": "tsconfig.app.json","assets": [
              "src/favicon.ico","src/assets"
            ],"styles": [
              "src/styles.scss"
            ],"scripts": [],"vendorChunk": true,"extractLicenses": false,"buildOptimizer": false,"sourceMap": true,"optimization": false,"namedChunks": true
          },"configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts","with": "src/environments/environment.prod.ts"
                }
              ],"optimization": true,"outputHashing": "all","sourceMap": false,"namedChunks": false,"extractLicenses": true,"vendorChunk": false,"buildOptimizer": true,"budgets": [
                {
                  "type": "initial","maximumWarning": "2mb","maximumError": "5mb"
                },{
                  "type": "anyComponentStyle","maximumWarning": "6kb","maximumError": "10kb"
                }
              ]
            }
          },"defaultConfiguration": ""
        },"serve": {
          "builder": "@angular-devkit/build-angular:dev-server","options": {
            "browserTarget": "client:build"
          },"configurations": {
            "production": {
              "browserTarget": "client:build:production"
            }
          }
        },"extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n","options": {
            "browserTarget": "client:build"
          }
        },"test": {
          "builder": "@angular-devkit/build-angular:karma","options": {
            "main": "src/test.ts","tsConfig": "tsconfig.spec.json","karmaConfig": "karma.conf.js","scripts": []
          }
        },"lint": {
          "builder": "@angular-devkit/build-angular:tslint","options": {
            "tsConfig": [
              "tsconfig.app.json","tsconfig.spec.json","e2e/tsconfig.json"
            ],"exclude": [
              "**/node_modules/**"
            ]
          }
        },"e2e": {
          "builder": "@angular-devkit/build-angular:protractor","options": {
            "protractorConfig": "e2e/protractor.conf.js","devServerTarget": "client:serve"
          },"configurations": {
            "production": {
              "devServerTarget": "client:serve:production"
            }
          }
        },"server": {
          "builder": "@angular-devkit/build-angular:server","options": {
            "outputPath": "dist/client/server","main": "server.ts","tsConfig": "tsconfig.server.json","extractLicenses": false
          },"configurations": {
            "production": {
              "outputHashing": "media","fileReplacements": [
                {
                  "replace": "src/environments/environment.ts","extractLicenses": true
            }
          },"defaultConfiguration": "production"
        },"serve-ssr": {
          "builder": "@nguniversal/builders:ssr-dev-server","configurations": {
            "development": {
              "browserTarget": "client:build:development","serverTarget": "client:server:development"
            },"production": {
              "browserTarget": "client:build:production","serverTarget": "client:server:production"
            }
          },"defaultConfiguration": "development"
        },"prerender": {
          "builder": "@nguniversal/builders:prerender","options": {
            "routes": [
              "/"
            ]
          },"configurations": {
            "production": {
              "browserTarget": "client:build:production","serverTarget": "client:server:production"
            },"development": {
              "browserTarget": "client:build:development","serverTarget": "client:server:development"
            }
          },"defaultConfiguration": "production"
        }
      }
    }
  },"defaultProject": "client"
}

package.json

{
  "name": "client","version": "0.0.0","scripts": {
    "ng": "ng","start": "ng serve","build": "ng build","test": "ng test","lint": "ng lint","e2e": "ng e2e","dev:ssr": "ng run client:serve-ssr","serve:ssr": "node dist/client/server/main.js","build:ssr": "ng build && ng run client:server","prerender": "ng run client:prerender"
  },"private": true,"dependencies": {
    "@angular/animations": "~12.0.3","@angular/common": "~12.0.3","@angular/compiler": "~12.0.3","@angular/core": "~12.0.3","@angular/forms": "~12.0.3","@angular/platform-browser": "~12.0.3","@angular/platform-browser-dynamic": "~12.0.3","@angular/platform-server": "~12.0.3","@angular/router": "~12.0.3","@nguniversal/express-engine": "^12.0.1","express": "^4.15.2","rxjs": "~6.6.0","tslib": "^2.0.0","zone.js": "~0.11.4"
  },"devDependencies": {
    "@angular-devkit/build-angular": "~12.0.3","@angular/cli": "~12.0.3","@angular/compiler-cli": "~12.0.3","@nguniversal/builders": "^12.0.1","@types/express": "^4.17.0","@types/jasmine": "~3.6.0","@types/node": "^12.11.1","codelyzer": "^6.0.0","jasmine-core": "~3.7.1","jasmine-spec-reporter": "~5.0.0","karma": "~6.3.3","karma-chrome-launcher": "~3.1.0","karma-coverage": "~2.0.3","karma-jasmine": "~4.0.0","karma-jasmine-html-reporter": "^1.6.0","protractor": "~7.0.0","ts-node": "~8.3.0","tslint": "~6.1.0","typescript": "~4.2.4"
  }
}

我尝试在服务的“配置”中添加“开发”:

"serve": {
          "builder": "@angular-devkit/build-angular:dev-server","configurations": {
            "production": {
              "browserTarget": "client:build:production"
            },"development": {
              "browserTarget": "client:build:production"
            }
          }
        },

但是没有用。

解决方法

我遇到了完全相同的问题,我第一次去环球影城。

我在 angular.json 的以下节点中添加了“开发”配置:-

projects->{project-name}->architect->build->configurations
projects->{project-name}->architect->server->configurations

由于我通常使用“生产”和“暂存”配置运行,我只是复制了暂存配置并进行了一些调整以停止文件替换,并在我习惯了服务器端渲染的同时为我提供了一个简单的调试平台。

,

没有任何帮助。因此,我使用 Angular 12 删除了该项目,并使用 Angular 11 创建了一个新项目并添加了 Universal,运行 dev:ssr,它就可以工作了!

,

我在 GitHub 上针对此主题创建了问题:https://github.com/angular/universal/issues/2158

工作决定是: 您可以尝试删除serve-ssr上的这一行:“defaultConfiguration”:“development”和“configuration.development path。然后在构建器下面添加如下选项: "options": { "browserTarget": "client:build","serverTarget": "client:server" },

Angular.json 必须有这样的视图(使用 Universal)

 "serve-ssr": {
          "builder": "@nguniversal/builders:ssr-dev-server","options": {
            "browserTarget": "angular12-universal:build","serverTarget": "angular12-universal:server"
          },"configurations": {
            "production": {
              "browserTarget": "angular12-universal:build:production","serverTarget": "angular12-universal:server:production"
            }
          }
        },

更改项目名称上的 angular12-universal

 "serve-ssr": {
          "builder": "@nguniversal/builders:ssr-dev-server","options": {
            "browserTarget": "your-project-name-here:build","serverTarget": "your-project-name-here:server"
          },"configurations": {
            "production": {
              "browserTarget": "your-project-name-here:build:production","serverTarget": "your-project-name-here:server:production"
            }
          }
        },

  1. 注意,在版本 12 中,还有一种新的 SSR 实验方式,要选择加入,您可以使用 ng add @nguniversal/common。