业力错误'没有时间戳'

Jef*_*eff 50 requirejs karma-runner

试图让业力与requirejs一起工作.我不明白为什么我在运行Karma时遇到所有这些错误:

ERROR: 'There is no timestamp for /base/test/mainSpec.js?bust=1387739317116!'
ERROR: 'There is no timestamp for /base/app/main.js?bust=1387739317116!'
ERROR: 'There is no timestamp for /base/bower_components/jquery/jquery.js?bust=1387739317116!'
Run Code Online (Sandbox Code Playgroud)

当我在检查器中转到网络选项卡时,所有文件都没有404.

我有点困惑,因为业力似乎在寻找一个"基础"目录,但我的项目中没有"基础"目录.根据业力文档:

Karma提供/ base目录下的文件.因此,在服务器上将提供对文件的请求 http://localhost:9876/base/*.baseUrl的Require.js配置为使用相对路径加载的模块提供了起始上下文.为Karma服务器设置此值时,需要以/ base开头.我们希望测试的baseUrl与src/main.js中的基本URL相同,因此源中的相对需求不需要更改.所以,因为我们希望我们的基本URL位于src /,我们需要写/ base/src.

这至少令人困惑.我应该在main.js文件中有一个指向'/ base'的baseUrl配置吗?

inf*_*rno 23

注意:这篇文章在2014年1月16日由Karma有效.我不确定该lib的当前状态,也许他们修复了他们奇怪的配置逻辑并添加了有意义的错误消息.如果没有,那么通过修复与Karma相关的配置问题,这篇文章可能非常有用.

错误配置会导致这类错误.您应该将测试使用的所有内容添加到pattern配置文件中的文件中.

例如:

module.exports = function (config) {
    config.set({
        basePath: './',
        frameworks: ['jasmine', 'requirejs'],
        files: [
            {pattern: 'test/bootstrap.js', included: true},
            {pattern: 'test/**/*.js', included: false},
            {pattern: 'src/**/*.js', included: false},
            {pattern: 'vendor/**/*.js', included: false}
        ],
        exclude: [

        ],
        reporters: ['progress'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['Firefox'],
        captureTimeout: 6000,
        singleRun: false
    });
};
Run Code Online (Sandbox Code Playgroud)

在此示例中,bootstrap.jsincluded HTML中唯一的Karma 文件,其他文件是bootstrap.js中的代码加载的依赖项.模式顺序非常重要,遗憾的是它远非合乎逻辑:下一个模式不会覆盖前一个模式.因此,如果我将test/**/*.js模式作为第一个和test/bootstrap.js第二个,它将无法工作,因为不会包含引导程序.在这些情况下,Karma会向您发送一条"empty testsuite"消息,如果您不知道如何配置它,这将毫无用处......

如果您的测试尝试使用您在Karma配置文件中提供的模式未涵盖的文件,那么您将收到"There is no timestamp for xy"错误消息,这与前面提到的非常相似"empty testsuite".如果您不了解系统,您将无法获得线索,意味着什么,或者为了解决这个问题需要做些什么......

exclude配置对象的一部分用于文件,这些文件已添加到文件模式中以供包含,但您不希望在测试中包含或使用它们.这些可以是例如开发和生产环境的requirejs配置文件等...


Nar*_*pai 21

对我来说,它只是犯了错误的设置,basePath: 'base'而不是baseUrl: '/base'.

baseUrl: '/base' FTW!

  • 我很高兴OP找到了他的特定问题的解决方案,但对我来说,正确的解决方案是在我的require.config.js文件中分配_"baseUrl:'/ base'_.我正在使用grunt-karma,它正在使用业力.配置通过_ configFile:'karma.conf.js'在grunt配置对象中.无论如何,请确保将_'/ base'_分配给_baseUrl_,无论你在哪里使用,并且一如既往...错别字是敌人! (2认同)

小智 4

basePath 用于识别项目相对于配置文件 (karma.conf.js) 的根目录。看一下这个示例:https://github.com/karma-runner/karma/blob/v0.8.5/test/client/karma.conf.js

在浏览器中,我也收到了有关时间戳的错误,但它不会影响任何内容。测试工作正常。我想这应该是一个警告而不是一个错误:-)