Угловая миграция (с 4 на 6) e2e --proxy-config не работает

В настоящее время я переношу свое приложение с 4 на 6 и не могу выполнить свой прокси-скрипт для моих тестов e2e.

Листинг скрипта выглядит следующим образом:

"scripts": {
    "ng": "ng",
    "start": "ng serve",
    "start:tst1": "ng serve --proxy-config config/proxy/proxy.tst1.json",
    "start:tst5": "ng serve --proxy-config config/proxy/proxy.tst5.json",
    ...
    "test:watch": "ng test",
    "lint": "ng lint --type-check true",
    "e2e": "ng e2e",
    "e2e:tst1": "ng e2e --proxy-config config/proxy/proxy.tst1.json",
    "e2e:tst5": "ng e2e --proxy-config config/proxy/proxy.tst5.json",
  },

Я не понимаю, что команды запуска (ng serve) отлично работают для instancenpm run start:tst5. Но когда я пытаюсь выполнить тесты e2e, такие как npm run e2e:tst5, он выдает ошибку: Unknown option: '--proxyConfig'.

Конфигурация в моем angular.json выглядит следующим образом:

angular.json

...
"lmsbo-bo-e2e": {
  "root": "e2e",
  "sourceRoot": "e2e",
  "projectType": "application",
  "architect": {
    "e2e": {
      "builder": "@angular-devkit/build-angular:protractor",
      "options": {
        "protractorConfig": "e2e/protractor.conf.js",
        "devServerTarget": "lmsbo-bo:serve"
      },
        "configurations": {
            "production": {
                "devServerTarget": "lmsbo-bo:serve:production"
            }
        }
    },
  ...

Редактировать

Я получил тест e2e, работающий со следующим дополнением в angular.cli:

        "serve": {
            "builder": "@angular-devkit/build-angular:dev-server",
            "options": {
                "browserTarget": "lmsbo-bo:build",
                "proxyConfig": "config/proxy/proxy.tst5.json" <== **added this** line
            },
            "configurations": {
                "production": {
                    "browserTarget": "lmsbo-bo:build:production"
                }
            }
        },

Но такой подход к решению проблемы никоим образом не удовлетворителен. Мне нужно менять эту строку кода каждый раз, когда я хочу выполнить в другой среде. Я бы предпочел управлять этим через командную строку, написав что-то вроде: ng serve --proxy-config config/proxy/proxy.tst5.json.


person MarcoLe    schedule 20.08.2018    source источник
comment
Попробуйте увидеть это: - stackoverflow.com/questions/51681813/ - stackoverflow.com/questions / 50927406 / пока   -  person RikG93    schedule 20.08.2018
comment
Не то, что я ищу.   -  person MarcoLe    schedule 20.08.2018
comment
Вы можете запустить следующую команду в терминале перед выполнением теста. Установите прокси в терминале SET https_proxy = yourcompanydomain.com:portnumber УСТАНОВИТЬ http_proxy = yourcompanydomain.com:com:portnumber   -  person Ragavan Rajan    schedule 24.08.2018
comment
Конфигурация прокси уже настроена. Когда я выполняю ng serve --proxy-config config/proxy/proxy.tst1.json, все работает нормально. Но когда я заменяю serve на e2e, появляется ошибка. Я немного расстроен ....   -  person MarcoLe    schedule 24.08.2018
comment
Насколько я понимаю, он больше не поддерживается github.com/angular/angular-cli / issues / 11408 github.com/angular/angular-cli/issues/ 6358   -  person Zysce    schedule 24.08.2018
comment
Да, это то, о чем я подозреваю прямо сейчас. Возможно ли добавить несколько путей в proxyConfig: ...., а затем выполнить разные пути через ng serve ---proxyOptions=...?   -  person MarcoLe    schedule 24.08.2018
comment
для этого есть открытая проблема на GitHub, см. следующие github.com/angular/angular-cli / issues / 6358   -  person Carlos E    schedule 24.08.2018
comment
@ creep-story, пожалуйста, поделитесь config/proxy/proxy.tst5.json?   -  person tprieboj    schedule 17.01.2019


Ответы (3)


Вы можете сделать это, обновив свой angular.json следующим образом (замените имя проекта на my-project):

1) В проектах -> my-project-e2e обновите devServerTarget из

"my-project:serve" 

to

"my-project:serve:e2e"

2) В проектах -> мой-проект -> архитектор -> конфигурации добавьте

"e2e": {
          "browserTarget": "cli-advisor-portal:build:e2e",
          "proxyConfig": "proxy.local.config.json"
        }
person raymondboswel    schedule 30.08.2018
comment
Не уверен, почему это было отклонено. У меня это сработало очень хорошо - в моем случае я хотел использовать две разные конфигурации прокси для двух разных сред (локальной и тестовой). - person Dawid Stróżak; 13.11.2018
comment
Рад слышать это! - person raymondboswel; 24.12.2018

Несмотря на то, что эта функция больше не поддерживается и в github уже есть открытая проблема, я нашел довольно удобный способ выполнить конфигурацию прокси через script:

добавьте в свой package.json следующие строки (пример):

"e2e:local": "ng config projects.**yourAppName**.architect.serve.options.proxyConfig **yourProxyFile1** && ng e2e && ng config projects.**yourAppName**.architect.serve.options.proxyConfig ''",
"e2e:tst1": "ng config config projects.**yourAppName**.architect.serve.options.proxyConfig **yourProxyFile2** && ng e2e && ng config projects.**yourAppName**.architect.serve.options.proxyConfig ''"

Все, что вам нужно сделать, это установить значение proxyConfig в вашей команде angular.json через ng и сбросить его после завершения тестов e2e. Убедитесь, что команда ng работает (в противном случае добавьте путь angular/cli в свойства среды вашей операционной системы и перезагрузите компьютер).

person MarcoLe    schedule 27.08.2018
comment
Это выкинет меня Error: Unexpected end of file., когда он попытается удалить config. - person Bojan Kogoj; 19.10.2018

Если я правильно понимаю - вам нужно избежать изменения строки конфигурации прокси каждый раз, когда вы хотите запускать тесты e2e для разных сред:

Создайте отдельные конфигурации прокси для ваших сред, например:

  • proxy.config.yourenv1.json
  • proxy.config.yourenv2.json

Добавьте конфигурации для каждой среды в serve:

"serve": { ... "configurations": { "yourenv1-e2e": { "browserTarget": "yourapp:build", "proxyConfig": "proxy.config.yourenv1.json" }, "yourenv2-e2e": { "browserTarget": "yourapp:build", "proxyConfig": "proxy.config.yourenv2.json" } } },

Затем под yourapp-e2e снова добавьте конфигурации для каждой среды:

"yourapp-e2e": {
  ...
  "architect": {
    "e2e": {
      ...
      "configurations": {
        "yourenv1-e2e": {
          "devServerTarget": "yourapp:serve:yourenv1-e2e"
        },
        "yourenv2-e2e": {
          "devServerTarget": "yourapp:serve:yourenv2-e2e"
        },
      }
    },

Теперь вы можете просто запустить это:

ng e2e --configuration yourenv-e2e

Тесты e2e будут запущены с использованием желаемого файла конфигурации прокси.
На основе ответа @ raymondboswel.

person Dawid Stróżak    schedule 12.11.2018