Karma测试,PhantomJS错误:无法找到模块'事件'

时间:2016-11-11 12:32:32

标签: javascript node.js typescript phantomjs karma-runner

我正在使用TypeScript编写Node.js项目。编译是使用tsc完成的,我没有使用任何像Gulp或Grunt这样的任务运行器。我会尽量简洁,但如果需要进一步的细节,我很乐意为他们提供。

我有以下课程:

// Foo.ts
import { EventEmitter } from 'events';
export class Foo extends EventEmitter {
  //...
}

当我尝试使用Jasmine与Karma和PhantomJS进行测试时,我收到以下错误:Error: Could not find module 'events' from '(...)/foo.js'。对我来说,似乎PhantomJS不知道从哪里取events模块。

我的karma.conf.js如下所示:

var createCoverageReport = false;

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',
    frameworks: ['jasmine', 'karma-typescript', 'es6-shim'],
    files: [
      'src/**/*.ts'
    ],
    exclude: [
    ],
    preprocessors: {
      'src/**/*.ts': ['karma-typescript']
    },
    reporters: ['spec'].concat(createCoverageReport ? ['karma-typescript'] : []),
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false,
    concurrency: Infinity
  })
}

如何让PhantomJS知道events模块来自Node.js内部模块?

1 个答案:

答案 0 :(得分:1)

嗯,根据an answer to a similar question on SO,我不可能故意这样做。

Karma是测试前端代码的测试运行者。这就是它的设计方式。因此,如果不使用奇怪的解决方法,则不能要求任何节点内部库。

如果您想测试后端代码,请继续使用,例如MochaChai代替了Karma和Jasmine。搬到这个图书馆并不是很痛苦,我完全可以推荐这样做。

此外,this article提供了有关如何将Mocha与TypeScript一起使用的良好介绍,因此我建议先阅读它。