javascript - Karma 测试,PhantomJS 错误 : Could not find module 'events'

标签 javascript node.js typescript phantomjs karma-runner

<分区>

我正在使用 TypeScript 编写一个 Node.js 项目。编译是使用 tsc 完成的,我没有使用任何任务运行程序,如 Gulp 或 Grunt。我会尽量简明扼要,但如果需要任何进一步的详细信息,我会很乐意提供。

我有以下类(class):

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

当我尝试使用带有 Karma 和 PhantomJS 的 Jasmine 对其进行测试时,出现以下错误: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 内部模块?

最佳答案

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

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

如果您想测试后端代码,请继续使用例如MochaChai而不是 karma 和 Jasmine 。迁移到这个库并不是很痛苦,我完全可以推荐这样做。

此外,this article很好地介绍了如何将 Mocha 与 TypeScript 结合使用,因此我建议先阅读它。

关于javascript - Karma 测试,PhantomJS 错误 : Could not find module 'events' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548113/

相关文章:

typescript - 将 Angular 2 双向数据绑定(bind)与 Polymer 结合使用

ios - Ionic 4 IOS Socket.io如何动态获取配置

javascript - 为什么将我所有的 jquery 插件放入一个文件中不起作用?

javascript - 在 Typescript/Javascript 中过滤掉深度嵌套数据结构的对象

node.js - 检查 PostgreSQL v9.5+ 中的 jsonb 对象内部是否存在键

javascript - Node.Js 中的 urlencoded 与 form-data

angular - 将 ionic 应用程序转换为延迟加载

javascript - 响应式设计没有响应

javascript - 为什么当前打开的 div 没有关闭

node.js - 尝试理解 Node.js 中的可读流