Обнаружена ошибка webpack \ karma при запуске тестов с помощью angular-cli. - PullRequest
0 голосов
/ 16 января 2019

Я столкнулся со странной проблемой, когда при попытке запустить мои тесты через angular-cli, и webpack, похоже, не может скомпилировать мое приложение. В частности, он не похож на модуль узла, который я импортирую в один из моих исходных файлов TS.

Я использую свой собственный модуль узла (еще не опубликованный в npm), у которого файл ввода определен так:

index.js

const MyModule = require('./src/index.js');

const myModule = new MyModule();

module.exports = {
  doStuff: myModule.doStuff,
  doOtherStuff: myModule.doOtherStuff
}

В моем исходном файле TS (приложение Angular) я включаю модуль следующим образом:

import MyModule = require('@acme/mymodule');

Это прекрасно работает при запуске приложения, и я могу вызвать функцию, представленную в модуле, в моем коде, как и ожидалось.

Когда я запускаю тесты, я получаю следующую ошибку:

16 01 2019 13:22:11.662:DEBUG [middleware:source-files]: Fetching /_karma_webpack_/main.bundle.js
16 01 2019 13:22:12.067:DEBUG [phantomjs.launcher]: TypeError: undefined is not an object (evaluating 'modules[moduleId].call')

16 01 2019 13:22:12.067:DEBUG [phantomjs.launcher]:   http://localhost:9876/_karma_webpack_/inline.bundle.js:55 in __webpack_require__
  http://localhost:9876/_karma_webpack_/main.bundle.js:10045 in ../../../../../src/test.ts
  http://localhost:9876/_karma_webpack_/inline.bundle.js:55 in __webpack_require__
  http://localhost:9876/_karma_webpack_/inline.bundle.js:26 in webpackJsonpCallback

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
  SyntaxError: Expected an identifier but found 'MyModule' instead
  at http://localhost:9876/_karma_webpack_/scripts.bundle.js:327
PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
  SyntaxError: Expected an identifier but found 'MyModule' instead
  at http://localhost:9876/_karma_webpack_/scripts.bundle.js:327

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
  SyntaxError: Expected an identifier but found 'MyModule' instead
  at http://localhost:9876/_karma_webpack_/scripts.bundle.js:327

16 01 2019 13:22:12.070:DEBUG [karma]: Run complete, exiting.
16 01 2019 13:22:12.071:DEBUG [launcher]: Disconnecting all browsers

Я задавался вопросом, было ли это как-то связано с моим использованием const, и поэтому я изменил на var, и это фактически возвращает мое прошлое к ошибке.

Я бы предпочел использовать const и let во всем исходном модуле моего узла, что я сейчас и делаю, есть ли что-то дополнительное, что мне нужно настроить с помощью karma \ webpack для компиляции во время тестового прогона, чтобы мой режим модуля будет включен? Или это может быть связано с тем, что PhantomJS интерпретирует мое использование require() в моем файле TS?

Обновление

Итак, я попробовал использовать хром без головы для своих тестов, и я получаю require is not defined ошибки из веб-пакета. Итак, я предполагаю, что мне нужно запустить препроцессор поверх исходного файла моего модуля узла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...