业力错误'没有时间戳'
试图得到有关运用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!'
当我去检查员的networking选项卡时,所有的文件都没有404s。
我有点困惑,因为业力似乎在寻找一个“基地”的目录,但没有在我的项目中的“基地”目录。 根据业力文件:
Karma提供/ base目录下的文件。 所以,在服务器上,对文件的请求将在
http://localhost:9876/base/*
。 baseUrl的Require.jsconfiguration为使用相对path加载的模块提供了启动上下文。 为Karma服务器设置此值时,需要以/ base开头。 我们希望我们testing的baseUrl与src / main.js中的基础url是相同的文件夹,这样在源文件中的相对需求就不需要改变。 所以,因为我们希望我们的基址在src /,我们需要写/ base / src。
这个混乱至less可以说。 我应该在我的main.js文件中指向“/ base”的baseUrlconfiguration?
注意:这篇文章在2014年1月16日被Karma有效。我不确定那个lib的当前状态,也许他们修正了他们奇怪的configuration逻辑并添加了有意义的错误信息。 如果没有,那么这个post可能是非常有用的修复与Karma相关的configuration问题。
这些types的错误是由错误configuration引起的。 您应该将您的testing使用的所有内容添加到configuration文件中的文件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 }); };
在这个例子中, bootstrap.js是Karma在HTML中included
的唯一文件 , 其他文件是由bootstrap.js中的代码加载的依赖项 。 模式顺序是非常重要的,可悲的是,这是不合逻辑的: 下一个模式不会覆盖前一个模式 。 因此,如果我将test/**/*.js
模式作为第一个,并将test/bootstrap.js
作为第二个,那么它将不起作用,因为bootstrap不会包含在内。 在这些情况下,Karma发给你一个"empty testsuite"
信息,如果你不知道如何configuration它,那么这个信息是无用的。
如果您的testing尝试使用您在Karmaconfiguration文件中给出的模式未覆盖的文件,那么您将得到"There is no timestamp for xy"
错误消息,这与前面提到的"empty testsuite"
。 如果你不知道这个系统,你就不会有任何线索,这意味着什么,或者你需要做些什么来解决这个问题。
configuration对象的exclude
部分是针对已添加到文件模式以供包含的文件,但您不希望在testing中包含或使用它们。 这些例如可以是用于开发和生产环境的requirejsconfiguration文件等等。
对我来说,只是把basePath: 'base'
设置为错误basePath: 'base'
而不是baseUrl: '/base'
。
baseUrl: '/base'
base'ftw!
basePath是确定你的项目相对于configuration文件(karma.conf.js)的根。 看看这个例子: https : //github.com/karma-runner/karma/blob/v0.8.5/test/client/karma.conf.js
在浏览器中,我也得到了关于时间戳的错误,但是不影响任何内容。 testing工作正常。 我想这应该是一个警告比错误:-)
杰夫的权利,你应该排除你的应用程序的requirejsconfiguration文件,因为“我们不希望在我们的testing中真正启动应用程序[LINK] ”。
test-main.js
configuration文件是您应用程序使用的requirejsconfiguration文件的一个单独文件 ,在您的情况下可能是config.js
或main.js
,具体取决于您configurationrequirejs的位置。
他们都configurationpath和依赖关系(可以指定相同的),但前者是为您编写的testing提供requirejs支持。 这整个requirejs设置是从您在应用程序中使用的requirejs单独设置的。 所以不要包括后者,它会把噶弄糊涂了。
而上面的链接是一个工作与它的 requirejs演示噶玛,检查出来。
尝试所有解决scheme发布在不同的来源, 最后我得到了固定 。 在这里检查: 使“no timestamp”错误可configuration#6 。
来自karma.conf.js文件问题的示例:
client: { requireJsShowNoTimestampsError: '^(?!.*(^/base/app/node_modules/))' }
在我的karma.conf.js文件中,我只是排除了包含我的require.config函数的文件(在我的情况下是config.js),错误消失了。
exclude: [ 'app/config.js', 'bower_components/jasmine/**/*.js' ],
当有问题的文件实际上不存在时,也可能发生此错误!
所以检查确保你得到这个错误的文件实际上存在于你的项目中!
一旦你find了这些文件,你可以使用类似于你的karma.conf.js
的模式来忽略它们,如果在某些情况下它们的存在应该被忽略:
exclude: [ 'path/to/files/to/ignore/**/*.js' ]