使用angular2和webpack设置karma:找不到Entry模块中的ERROR:错误:无法解析'file'或'directory'

时间:2017-02-07 15:40:59

标签: angular webpack karma-runner

我按照官方的Angular文档来设置一个带webpack和karma的Angular2项目:https://angular.io/docs/ts/latest/guide/webpack.html。该项目工作正常,但业力设置没有。当我运行“npm test”(或“业力开始”)时,我不断收到此错误:

  

找不到Entry模块中的错误:错误:无法在[我的项目路径]中解析'file'或'directory'[my project path] /config/karma-test-shim.js

如果我根本不提供karma-test-shim.js文件,则错误是不同的,所以它肯定是找到该文件。我也尝试清空karma-test-shim.js文件并手动输入一些代码,如果有任何奇怪的字符来自复制粘贴,我仍然会收到该错误。

如何通过此错误并运行业力测试?

config / karma.conf.js的内容(完全从我上面链接的文档中复制):

var webpackConfig = require('./webpack.test');

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

frameworks: ['jasmine'],

files: [
  {pattern: './config/karma-test-shim.js', watched: false}
],

preprocessors: {
  './config/karma-test-shim.js': ['webpack', 'sourcemap']
},

webpack: webpackConfig,

webpackMiddleware: {
  stats: 'errors-only'
},

webpackServer: {
  noInfo: true
},

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

config.set(_config);
};

config / karma-test-shim.js的内容(再次,完全从我上面链接的文档中复制):

Error.stackTraceLimit = Infinity;

require('core-js/es6');
require('core-js/es7/reflect');

require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy');
require('zone.js/dist/sync-test');
require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');

var appContext = require.context('../src', true, /\.spec\.ts/);

appContext.keys().forEach(appContext);

var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');

testing.TestBed.initTestEnvironment(browser.BrowserDynamicTestingModule, browser.platformBrowserDynamicTesting());

1 个答案:

答案 0 :(得分:0)

我终于让这个设置起作用了。

发生了什么事:我已经按照我从Angular文档发布的指南来设置我的项目,可能大约一个月前。几周之后,我回到相同的文档然后设置业力并开始编写测试。在队友向我指出之前,我没有意识到的是,在那个时候,该页面已被修改,某些内容已经升级,包括webpack。我的初始设置是使用webpack 1.x,因为那是当时Angular文档中的内容,但是当我设置karma时,该文档现在使用webpack 2.x.这是非常偷偷摸摸的,因为没有迹象表明文档已经改变。

我根据对文档的更新更新了我的package.json,现在karma工作了。