我正在使用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内部模块?
答案 0 :(得分:1)
嗯,根据an answer to a similar question on SO,我不可能故意这样做。
Karma是测试前端代码仅的测试运行者。这就是它的设计方式。因此,如果不使用奇怪的解决方法,则不能要求任何节点内部库。
如果您想测试后端代码,请继续使用,例如Mocha和Chai代替了Karma和Jasmine。搬到这个图书馆并不是很痛苦,我完全可以推荐这样做。
此外,this article提供了有关如何将Mocha与TypeScript一起使用的良好介绍,因此我建议先阅读它。