【问题标题】:Setting up karma with angular2 and webpack: ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory'使用 angular2 和 webpack 设置业力:找不到入口模块中的错误:错误:无法解析“文件”或“目录”
【发布时间】:2017-06-24 22:32:48
【问题描述】:

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

找不到入口模块中的错误:错误:无法解析 [我的项目路径]/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());

【问题讨论】:

    标签: angular webpack karma-runner


    【解决方案1】:

    我终于让这个设置工作了。

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

    我已经根据文档的更新更新了我的 package.json,现在 karma 可以工作了。

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 2019-07-27
      • 2016-11-18
      • 2017-06-19
      • 1970-01-01
      • 2019-01-19
      • 2016-06-10
      相关资源
      最近更新 更多