【问题标题】:Tried to add requirejs to my karma tests, and now getting "script error for: jasmine-jquery"试图将requirejs添加到我的业力测试中,现在得到“脚本错误:jasmine-jquery”
【发布时间】:2014-02-21 03:28:48
【问题描述】:

我有一个没有 requirejs 的基于 karma 的测试的有效实现,我决定在它变得太大之前添加 requirejs。

我不确定我做了什么,但我现在收到一条我不理解的错误消息。

我对其中一些框架的一个抱怨是,当出现问题时,诊断有点神秘。

这是我在 INFO 级别看到的:

INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [watcher]: Pattern "<projectroot>/src/test/webapp/js/libs/jasmine-query.js" does not match any file.
INFO [Chrome 32.0.1700 (Windows 7)]: Connected on socket ORPzWZDQ7lM8ExSoa6RC
ERROR: 'There is no timestamp for /base/src/test/webapp/js/libs/jasmine-jquery.js!'
WARN [web-server]: 404: /base/src/test/webapp/js/libs/jasmine-jquery.js
Chrome 32.0.1700 (Windows 7) ERROR
    Uncaught Error: Script error for: jasmine-jquery
    http://requirejs.org/docs/errors.html#scripterror
    at <homedir>/AppData/Roaming/npm/node_modules/requirejs/require.js:141

“不匹配任何文件”警告是出现问题的第一个迹象,但我不明白为什么会这样说。

这是我的“karma.conf.js”:

module.exports = function(config) {
    'use strict';
  config.set({
basePath: '../../../..',
frameworks: ['jasmine', 'requirejs'],
files: [
    {pattern: "src/main/webapp/js/**/*.js", included: false},
    {pattern: "src/test/webapp/js/**/*.test.js", included: false},
    {pattern: "src/test/webapp/js/libs/jasmine-query.js", included: false},
    "src/test/webapp/js/test-main.js"
    ],
exclude: [
],
plugins:[
     'karma-jasmine',
     'karma-requirejs',
     'karma-coverage',
     'karma-junit-reporter',
     'karma-phantomjs-launcher',
     'karma-chrome-launcher',
     'karma-firefox-launcher',
     'karma-ie-launcher'
     ],
preprocessors: {
    "src/main/webapp/js/mylibs/*.js": 'coverage'
},
coverageReporter: {
    type: "lcov",
    dir: "target/karma-coverage"
},
junitReporter: {
    outputFile: 'target/surefire-reports/TEST-karma.xml'
},
reporters: ['dots', 'junit'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: 60000,
singleRun: false
  });
};

这是我的“test-main.js”:

var tests = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
    if (/\.test\.js$/.test(file)) {
    tests.push(file);
    }
}
}

requirejs.config({
baseUrl: '/base',
paths: {
    'jquery': 'src/main/webapp/js/libs/jquery-1.4.2',
    'jasmine-jquery': 'src/test/webapp/js/libs/jasmine-jquery'
},
shim: {
    'jasmine-jquery': {
    deps: ['jquery']
    }
},
deps: tests,
callback: window.__karma__.start
});

如果有帮助,这里是 src/test/webapp 中的文件列表,包括一些我还没有使用的文件(我认为):

src/test/webapp/css/jasmine.css
src/test/webapp/js/data.daily.test.js
src/test/webapp/js/init.js
src/test/webapp/js/karma.conf.js
src/test/webapp/js/libs/boot.js
src/test/webapp/js/libs/console.js
src/test/webapp/js/libs/jasmine-html.js
src/test/webapp/js/libs/jasmine-jquery.js
src/test/webapp/js/libs/jasmine.js
src/test/webapp/js/libs/require-2.1.11.min.js
src/test/webapp/js/test-main.js

【问题讨论】:

    标签: javascript jquery requirejs jasmine karma-runner


    【解决方案1】:

    您使用的是哪个版本的 jquery-jasmine?尝试将 jquery 更新到最新版本(如果您想支持旧浏览器,则为 2.1.0 或 1.9.0)。我在使用 jquery 1.7.0 运行 jasmine-query 时遇到了一些问题,更新 jquery 会为我修复它。

    另外,jQuery 1.4.2 已经很老了(1.4.0 于 2010 年 1 月 14 日发布)所以更新也不错!

    【讨论】:

    • 所有要点都很好,但可能与我的问题无关。在我添加 requirejs 之前,此设置正在运行。我的 karma 或 requirejs 配置有问题导致此问题。
    • 您确定在迁移到 requirejs 时没有更新任何库?
    【解决方案2】:

    我相信我找到了解决这个特定问题的方法。奇怪的是,文件列表中的“模式”子属性似乎要求它是一个实际的模式,而不是只能匹配单个文件的路径。

    一旦我在“karma.conf.js”中更改了以下内容:

    {pattern: "src/test/webapp/js/libs/jasmine-query.js", included: false},
    

    到:

    {pattern: "src/test/webapp/js/libs/*.js", included: false},
    

    它不再抱怨了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2017-01-24
      • 2014-09-05
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      相关资源
      最近更新 更多