Angular2测试,SystemJS无法加载模块

Angular2测试,SystemJS无法加载模块,angular,karma-runner,karma-jasmine,Angular,Karma Runner,Karma Jasmine,我的环境设置非常类似于官方的Angular2 quickstart,但有一个区别:我使用的不是public/src/app,而是public/app 尝试使用ViewChild测试组件时: @ViewChild('profileModal') profileModal: ModalComponent; 加载在被测部件中的: import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal'; npm测试显示此错误: 05 05 2017

我的环境设置非常类似于官方的Angular2 quickstart,但有一个区别:我使用的不是
public/src/app
,而是
public/app

尝试使用
ViewChild
测试
组件时:

@ViewChild('profileModal')
profileModal: ModalComponent;
加载在被测部件中的:

import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal';
npm测试
显示此错误:

05 05 2017 17:45:48.218:WARN [web-server]: 404: /base/ng2-bs3-modal/ng2-bs3-modal
[1] Chrome 58.0.3029 (Mac OS X 10.12.2) ERROR
[1]   {
[1]     "originalErr": {
[1]       "__zone_symbol__currentTask": {
[1]         "type": "microTask",
[1]         "state": "notScheduled",
[1]         "source": "Promise.then",
[1]         "zone": "<root>",
[1]         "cancelFn": null,
[1]         "runCount": 0
[1]       }
[1]     },
[1]     "__zone_symbol__currentTask": {
[1]       "type": "microTask",
[1]       "state": "notScheduled",
[1]       "source": "Promise.then",
[1]       "zone": "<root>",
[1]       "cancelFn": null,
[1]       "runCount": 0
[1]     }
[1]   }
我如何告诉
karma
/base/npm_模块/ng2-bs3-modal/ng2-bs3-modal
而不是
/base/ng2-bs3-modal/ng2-bs3-modal
加载,因为它正在尝试


使用
SystemJs
而不是
Webpack

您应该将其放入karma.config文件的文件部分,如下所示:

files: [ 'node_modules/ng2-bs3-modal/ng2-bs3-modal.js' ]
不确定您的配置文件中是否已经有该部分,但为了以防万一,请记住,您可以传递systemjs配置,让它加载您的应用程序及其依赖项:

files: [
    // System.js for module loading
    'node_modules/systemjs/dist/system.src.js',

    // Load any lib not included in systemjs.config here, like zone.js 
    'node_modules/zone.js/dist/zone.js',

    // RxJs
    { pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
    { pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false},
    // Paths loaded via module imports:
    // Angular itself
    { pattern: 'node_modules/@angular/**/*.js', included: false, watched: false },
    { pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false },

    { pattern: 'systemjs.config.js', included: false, watched: false },
    { pattern: 'systemjs.config.extras.js', included: false, watched: false },
    'karma-test-shim.js',
]
你可以参考这个来了解更多的细节

files: [
    // System.js for module loading
    'node_modules/systemjs/dist/system.src.js',

    // Load any lib not included in systemjs.config here, like zone.js 
    'node_modules/zone.js/dist/zone.js',

    // RxJs
    { pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
    { pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false},
    // Paths loaded via module imports:
    // Angular itself
    { pattern: 'node_modules/@angular/**/*.js', included: false, watched: false },
    { pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false },

    { pattern: 'systemjs.config.js', included: false, watched: false },
    { pattern: 'systemjs.config.extras.js', included: false, watched: false },
    'karma-test-shim.js',
]