【问题标题】:Angular 2, Karma and PhantomJSAngular 2、Karma 和 PhantomJS
【发布时间】:2017-03-26 17:45:42
【问题描述】:

我正在学习如何使用 Angular 2 设置 Karma 并遇到问题。

我遵循 Julie 在她的 seed project 中所做的并将其应用到我的项目中。

在 Chrome 中一切正常,但是当我想使用 PhantomJS 时出现错误。这也发生在 PhantomJS2...

这是错误:

[karma]: Karma v0.13.22 server started at http://localhost:9877/
[launcher]: Starting browser PhantomJS2
[PhantomJS 2.0.0 (Mac OS X 0.0.0)]: Connected on socket /#1yDrSei5NUX4_WYaAAAA with id 93476222
Missing error handler on `socket`.
TypeError: (msg || "").replace is not a function  
   at node_modules/karma/lib/reporter.js:45:23

karma.config.js

module.exports = function (config) {
config.set({
    basePath : '',
    frameworks : ['jasmine'],
    files : [
        // paths loaded by Karma
        {pattern : 'node_modules/systemjs/dist/system-polyfills.js', included : true, watched : true},
        {pattern : 'node_modules/systemjs/dist/system.src.js', included : true, watched : true},
        {pattern : 'node_modules/es6-shim/es6-shim.js', included : true, watched : true},
        {pattern : 'node_modules/angular2/bundles/angular2-polyfills.js', included : true, watched : true},
        {pattern : 'node_modules/rxjs/bundles/Rx.js', included : true, watched : true},
        {pattern : 'node_modules/angular2/bundles/angular2.js', included : true, watched : true},
        {pattern : 'node_modules/angular2/bundles/testing.dev.js', included : true, watched : true},

        {pattern : 'karma-test-shim.js', included : true, watched : true},
        {pattern : 'app/**/*.js', included : false, watched : true},

        {pattern : 'app/**/*.html', included : false, watched : true},
        {pattern : 'app/**/*.css', included : false, watched : true},

        {pattern : 'test/**/*.ts', included : false, watched : false},
        {pattern : 'test/**/*.js', included : false, watched : true},
        {pattern : 'test/**/*.js.map', included : false, watched : false}

    ],

    proxies : {
        "/app/" : "/base/src/app/"
    },

    reporters : ['progress'],
    port : 9876,
    colors : true,
    logLevel : config.LOG_INFO,
    autoWatch : false,
    browsers : ['PhantomJS2'],
    singleRun : true
})}

有人知道我做错了什么吗? 提前致谢

【问题讨论】:

  • 感谢 alecxe,但我的 rx 是正确的 Rx,我尝试更改 shim 中的导入。
  • 感谢 Eric,我还尝试添加 runtime-traceur 并在 inteliJ 之外运行,但结果相同。
  • 你尝试过包含像 webpack 这样的打包工具吗?一周前我在工作中遇到了这个问题,我认为这解决了它。不过不确定。所以安装 karma-webpack 并像这样包含: preprocessors: { "Tests/**/*.js": ['webpack'] },

标签: phantomjs angular karma-runner karma-jasmine


【解决方案1】:

确保你的 karma.conf.js 中有这一行

{pattern: 'node_modules/systemjs/dist/system-polyfills.js', included: false, watched: false}, // PhantomJS2 (and possibly others) might require it

这个 github 项目适用于 phantom:

https://github.com/danday74/angular2-coverage/blob/master/karma.conf.js

克隆它并玩一玩

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2016-03-29
    • 2017-04-08
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多