我按照官方的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());
答案 0 :(得分:0)
我终于让这个设置起作用了。
发生了什么事:我已经按照我从Angular文档发布的指南来设置我的项目,可能大约一个月前。几周之后,我回到相同的文档然后设置业力并开始编写测试。在队友向我指出之前,我没有意识到的是,在那个时候,该页面已被修改,某些内容已经升级,包括webpack。我的初始设置是使用webpack 1.x,因为那是当时Angular文档中的内容,但是当我设置karma时,该文档现在使用webpack 2.x.这是非常偷偷摸摸的,因为没有迹象表明文档已经改变。
我根据对文档的更新更新了我的package.json,现在karma工作了。