【问题标题】:Karma/systemjs not looking in node_modules directory when trying to run tests尝试运行测试时,Karma/systemjs 不在 node_modules 目录中查找
【发布时间】:2015-12-22 18:13:30
【问题描述】:

我正在尝试使用带有 Angular 2 和 typescript 的 karma/jasmine/systemjs 运行测试。我之前使用 babel 让它在没有 systemjs/typescript 的情况下工作。

我还可以将 typescript 转换为 es6 并使用相同的业力设置而不使用 systemjs。

我想使用 systemjs,并且我不想进行两次转译,所以现在我正在尝试将 systemjs 与 karma 一起使用。 (使用 karma-system.js)。

我得到的错误是:

Error: XHR error (404 Not Found) loading /path/to/project/angular2/core.js

无论出于何种原因,karma/systemjs 都没有在 node_modules 目录中查找 angular,我不想将其硬编码到我的项目文件中。

karma.conf.js:

module.exports = function(config) {
  config.set({
    basePath: '',

    plugins: ['karma-systemjs', 'karma-jasmine', 'karma-chrome-launcher'],
    frameworks: ['systemjs', 'jasmine'],

    files: [
      'client/**/*.spec.js',
      'client/**/**/*.spec.js',
      'server/**/*.spec.js',
      'server/**/**/*.spec.js'
    ],

    exclude: [
        'node_modules/',
        'client/node_modules/*',
        'client/node_modules/**/*.spec.js',
        'server/node_modules/*'
    ],

    preprocessors: {},

    systemjs: {
        configFile: 'system.conf.js',
        serveFiles: [
            'client/**/*.js',
            'server/**/*.js',
        ],
        config: {
            defaultJSExtensions: true
        }
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_DEBUG,
    autoWatch: false,
    browsers: ['Chrome'],
    singleRun: false,
    concurrency: Infinity
  })
}

system.conf.js

System.config({
    paths: {
        'systemjs': 'node_modules/systemjs/dist/system.js',
        'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js',
        'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js'
    }
});

在我的打字稿文件中,我正在像这样加载角核心。

import { Component, View } from 'angular2/core';

它被转译为:

System.register(['angular2/core'], function(exports_1) {

我尝试将 baseUrl 添加到我的 systemjs 配置中,但它似乎没有做任何事情。

我已经“谷歌搜索”和搜索堆栈几个小时了。我查看了How to configure karma and systemjs to run tests for angular ES6 transpiled by traceur into amd format ES5 modulesAngular and ES6: Karma Testing with SystemJS 仍然没有解决问题。

【问题讨论】:

    标签: javascript angularjs karma-jasmine systemjs typescript1.5


    【解决方案1】:

    在您的 system.conf.js 文件中,您应该为所有 Angular 模块定义一个路径,如下所示:

    System.config({
        paths: {
            'angular2/*': 'node_modules/angular2/bundles/*.js',
        }
    });
    

    【讨论】:

    • 谢谢,这修复了该特定错误。不过,我希望 karma/servicejs 默认情况下可以一起检查 node_modules 目录。
    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2016-04-14
    • 2018-11-19
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多