Обновление Angular 5.2 до Angular 6 Visual Studio Mac 7.5.2 с использованием ядра 2.1 Asp.net - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь обновить Angular 5.2 create из основного шаблона .netcore 2.1, используя приведенную ниже команду

dotnet new angular -o my-new-app
cd my-new-app
cd ClientApp
npm install --save <package_name>

Ссылка, используемая для создания углового проекта - https://docs.microsoft.com/en-us/aspnet/core/spa/angular?view=aspnetcore-2.1&tabs=visual-studio

Теперь я перешел по ссылкеобновить до Angular 6 Как обновить / обновить с Angular 4 до Angular 5 +

использовать другую ссылку для обновления, но все ссылки показывают мне те же ошибки https://asish.com.au/how-to-upgrade-angular-5-application-to-angular-6-with-visual-studio-2017/

https://update.angular.io/

Но появляется много ошибок, таких как

Произошло необработанное исключение при обработке запроса.AggregateException: произошла одна или несколько ошибок.(Произошла одна или несколько ошибок. («Пуск» сценария NPM завершился без указания того, что Angular CLI прослушивал запросы. Вывод ошибки: Неизвестная опция: --eextractCss '))

Вот мой файл Package.json

{
  "name": "WebApp",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --extract-css",
    "build": "ng build --extract-css",
    "build:ssr": "npm run build -- --app=ssr --output-hashing=media",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^6.0.4",
    "@angular/common": "^6.0.4",
    "@angular/compiler": "^6.0.4",
    "@angular/core": "^6.0.4",
    "@angular/forms": "^6.0.4",
    "@angular/http": "^6.0.4",
    "@angular/platform-browser": "^6.0.4",
    "@angular/platform-browser-dynamic": "^6.0.4",
    "@angular/platform-server": "^6.0.4",
    "@angular/router": "^6.0.4",
    "@nguniversal/module-map-ngfactory-loader": "^6.0.0",
    "aspnet-prerendering": "^3.0.1",
    "bootstrap": "^4.1.1",
    "core-js": "^2.4.1",
    "rxjs": "^6.2.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.6.8",
    "@angular/cli": "^6.0.8",
    "@angular/compiler-cli": "^6.0.4",
    "@angular/language-service": "^6.0.4",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~10.3.1",
    "codelyzer": "^4.0.1",
    "jasmine-core": "~3.1.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^2.0.2",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^2.0.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^1.1.0",
    "protractor": "^5.3.2",
    "ts-node": "~6.1.0",
    "tslint": "~5.10.0",
    "typescript": "~2.9.1"
  },
  "optionalDependencies": {
    "node-sass": "^4.9.0"
  }
}

start.cs

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            // In production, the Angular files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/dist";
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseSpaStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action=Index}/{id?}");
            });

            app.UseSpa(spa =>
            {
                // To learn more about options for serving an Angular SPA from ASP.NET Core,
                // see https://go.microsoft.com/fwlink/?linkid=864501

                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start");
                }
            });
        }
    }

angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "WebApp": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist",
            "index": "src/index.html",
            "main": "src/main.ts",
            "tsConfig": "src/tsconfig.app.json",
            "progress": true,
            "polyfills": "src/polyfills.ts",
            "assets": [
              "src/assets"
            ],
            "styles": [
              "src/styles.css",
              "node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ]
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "WebApp:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "WebApp:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "WebApp:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "karmaConfig": "./karma.conf.js",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "scripts": [],
            "styles": [
              "src/styles.css",
              "node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            "assets": [
              "src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "WebApp-e2e": {
      "root": "",
      "sourceRoot": "e2e",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "./protractor.conf.js",
            "devServerTarget": "WebApp:serve"
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "e2e/tsconfig.e2e.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },
  "defaultProject": "WebApp",
  "schematics": {
    "@schematics/angular:component": {
      "prefix": "app",
      "styleext": "css"
    },
    "@schematics/angular:directive": {
      "prefix": "app"
    }
  }
}

Сведения об ошибке

Error Details

Может кто-нибудь, пожалуйста, дайте мне знать, как преобразовать угловой 5,2 в угловой 6 с соответствующей ссылкой

1 Ответ

0 голосов
/ 08 июня 2018

Полные шаги по обновлению Angular с 5.2 до 6

dotnet new angular -o my-new-app
cd my-new-app
cd ClientApp
npm install

Сначала обновите Angular CLI до последней версии глобально, используя следующую команду:

npm install -g @angular/cli

Далее нам нужно обновитьУгловая локальная версия CLI, специфичная для приложения.Для этого перейдите в корневую папку приложения Angular (где находится package.json) и выполните следующую команду.

npm install @angular/cli

Angular CLI теперь предлагает поддержку рабочих пространств, содержащих несколько проектов, таких как несколько приложений или библиотек.,Таким образом, теперь возможно иметь несколько приложений в одном проекте CLI (называемом рабочим пространством) и создавать библиотеки (общий набор компонентов, директив, каналов и сервисов)!Эта новая архитектура использует angular.json вместо .angular-cli.json для сборки и конфигурации проекта.Итак, файл .angular-cli.json необходимо удалить, а новый файл angular.json необходимо добавить в проект.Не волнуйтесь, вам не нужно делать это вручную.Выполните следующую команду, чтобы преобразовать файл конфигурации в новый формат (angular.json).

ng update @angular/cli

После успешного выполнения этой команды вы увидите файл angular.json в обозревателе решений.Мне пришлось выполнить эту команду дважды, чтобы получить новый файл.Таким образом, если вы не можете найти новый файл angular.json в обозревателе решений после первого запуска команды, попробуйте еще раз.

Затем настало время обновить все пакеты инфраструктуры.в Angular 6. Для этого выполните следующую команду:

ng update @angular/core

Все пакеты Angular Framework обновлены до Angular 6. Вы можете проверить это через файл package.json.

Затем запустите ng update, чтобы определить и обновить другие зависимости.

Angular 6 теперь зависит от TypeScript 2.7 и RxJS 6. Итак, нам нужно обновить RxJS.Вы бы уже думали о внесении изменений в код вручную везде, где используются импорт и операторы RxJS.Не волнуйтесь, есть пакет, который позаботится об этом.Выполните следующие команды для обновления RxJS.

npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json

Как только это будет сделано, удалите rxjs-compat.Этот пакет необходим для обратной совместимости с RxJS до версии 6. Но теперь он больше не требуется, поэтому давайте удалим его с помощью следующей команды:

npm uninstall rxjs-compat

Теперь запустите ng serve, чтобы увидетьПриложение создается и работает без ошибок.Здесь есть еще одна вещь.Если мы создадим приложение из Visual Studio 2017 и запустим его, в браузере может появиться следующее исключение.InvalidOperationException: «запуск» сценария NPM завершился без указания того, что Angular CLI прослушивал запросы.Вывод ошибки: Неизвестная опция: '–extractCss'

Это потому, что команда ng serve больше не поддерживает опцию --extractCss.ExtractCSS - это библиотека JavaScript и онлайн-инструмент, который позволяет извлекать идентификатор элемента, класс и встроенные стили из документа HTML и выводить их в виде таблицы стилей CSS.Эта опция недоступна в ng serve, потому что это опция, связанная со сборкой, а не со службой.

Чтобы исправить это, удалите опцию --extract-css из команды ng serve в разделе скриптов пакетаФайл .json.

"start": "ng serve"

Сохраните файл package.json, соберите приложение и снова запустите.Вы должны увидеть приложение, работающее в браузере.

Ссылка на источник - http://www.talkingdotnet.com/upgrade-angular-5-app-angular-6-visual-studio-2017/

...