使用angular-cli运行测试时遇到webpack \ karma错误

时间:2019-01-16 13:45:55

标签: node.js angular webpack phantomjs angular-cli

我遇到了一个奇怪的问题,即尝试通过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,这实际上使我越过了错误。

我宁愿能够在我目前正在执行的整个节点模块源中使用constlet,在测试过程中还需要配置karma \ webpack进行编译吗?运行以允许包含我的模式模块?还是与PhantomJS解释我在TS文件中对require()的用法有关?

更新

因此,我尝试使用无头chrome进行测试,但从Webpack中返回了require is not defined错误。所以我猜我需要在我的节点模块源文件上运行预处理器?

0 个答案:

没有答案