Я получаю эту ошибку при использовании PhatomJs. {"message": "После afterAll возникла ошибка \ nTypeError: undefined не является объектом (вычисление 'modules [moduleId] .call')", "str": "Ошибка после afterAll \ nTypeError: undefined не является объект (оценивая 'modules [moduleId] .call') "}

ощью:

ng test

Angular CLI запускает тесты по умолчанию в Chrome, и это здорово, но что, если мне нужно запустить их только в консольной среде (браузер без головы)?

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

ng test --browsers MyHeadLessBrowser

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

под управлением PhantomJS я получил следующее:

PhantomJS 2.1.1 (Linux 0.0.0) ОШИБКА TypeError: useValue, useFactory, данные не повторяются! вHttp: // Localhost: 9876 / _karma_webpack_ / polyfills.bundle.js: 854

eferenceError: Не могу найти переменную: Intl вHTTP: // локальный: 9876 / _karma_webpack_ / vendor.bundle.js (строка 49362) intlDateFormat @HTTP: // локальный: 9876 / _karma_webpack_ / vendor.bundle.js: 49362: 20

 Surender Kherwa25 сент. 2017 г., 14:34
Видетьэто
 Claudiu Hojda12 окт. 2017 г., 14:15
Безголовый браузер запускает ваш браузер без браузера,PhantomJS это безголовый сценарий WebKit с JavaScript API.PhantomJS больше не поддерживается из-за новых доступных опций без головы.

Ответы на вопрос(2)

Решение Вопроса

Как более полный ответ на основеУильям Хэмпширодин,CugaКомментарий и мои личные дополнения.

Краткий ответ: использование ChromeHeadless

Вы можете просто использоватьБезголовый хром:

ng test --browsers ChromeHeadless

Вам нужен Chrome 59+.

Но если вам нужен PhantomJS (и / или чен по умолчаниюng test поведение без аргументов) прочитайте следующее.

Более длинный ответ: использование PhantomJS

РЕДАКТИРОВАТЬ: Помните, что проект PhantomJS былархивируются, видетьэта тема.

Настроить

Чтобы иметь возможность (опционально) запускать свои тесты без браузера, используя PhantomJS, вам необходимо:

1) Установите некоторые зависимости:
npm install --save-dev karma-phantomjs-launcher
npm install --save intl
2) Добавьте PhantomJS в список плагинов Кармы

открытоkarma.conf.js и добавитьrequire('karma-phantomjs-launcher') кplugins массив, например:

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-phantomjs-launcher'),
      // ...
    ],
3) Включить полифилы

Откройте свойsrc/polyfills.ts файл и раскомментируйте следующие строки:

Браузер полифиллс

import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

ПРИМЕНЕНИЕ ИМПОРТА

import 'intl';
import 'intl/locale-data/jsonp/en';
Как запустить тестыУказание браузеров при запуске команды

Нет, вы можете запустить тест, используяChrome (по умолчанию angular-cli):

ng test --browsers Chrome

Или PhantomJS (без головы):

ng test --browsers PhantomJS

Изменение поведения по умолчанию простоng test

Можно изменить поведение по умолчаниюng test (так что когда нет--browsers аргумент предоставляется) путем изменения значенияbrowsers массив вkarma.conf.js.

Теперь он может быть установлен только для использованияChrome (настройка по умолчанию angular-cli):

browsers: ['Chrome'],

или жеPhantomJS:

browsers: ['PhantomJS'],

или даже оба:

browsers: ['Chrome', 'PhantomJS'],

 Lijo19 нояб. 2018 г., 10:59
это спасло мой день, спасибо

Это должно сделать трюк:

npm i --save-dev karma-phantomjs-launcher

Затем измените свойство plugins файла karma.conf.js, добавив плагин PhantomJS в список. Также добавьте PhantomJS в свойство браузера.

plugins: [
    require( 'karma-jasmine' ),
    require( 'karma-chrome-launcher' ),
    require( 'karma-phantomjs-launcher' ),
    require( 'karma-remap-istanbul' ),
    require( 'angular-cli/plugins/karma' )
],
...
browsers: [ 'PhantomJS', 'Chrome' ],

Поскольку вам нужен полностью безголовый опыт, вы можете удалить Chrome из свойства браузеров, а также удалить karma-chrome-launcher из массива плагинов.

 Cuga25 сент. 2017 г., 14:35
Чтобы добавить к ответу Уильяма, вы можете использовать предоставленную им конфигурацию и указать опции «не-UI» в командной строке / или на вашем сервере сборки с помощью:ng test --browsers PhantomJS
 Cuga25 сент. 2017 г., 14:38
@ShinDarth варианты, которые вы могли бы использовать:ng test --browsers Chrome или жеng test --browsers ChromeHeadless или жеng test --browsers PhantomJS
 Philip Puthenvila26 апр. 2018 г., 02:13
Я получаю эту ошибку при использовании PhatomJs. {"message": "После afterAll возникла ошибка \ nTypeError: undefined не является объектом (вычисление 'modules [moduleId] .call')", "str": "Ошибка после afterAll \ nTypeError: undefined не является объект (оценивая 'modules [moduleId] .call') "}
 Francesco Borzi25 сент. 2017 г., 14:36
см. редактирование: также было бы хорошо, если бы я мог указать, хочу ли я без браузера или нет при каждом запуске, так что-то вроде
 Cuga25 сент. 2017 г., 14:36
Если у вас установлен Chrome, но вы не хотите, чтобы он всплывал, вы также можете указать «ChromeHeadless» в качестве одного из браузеров, если вы не хотите использовать PhantomJS.

Ваш ответ на вопрос