Karma Require.js - 改变目录结构正在杀死一切

时间:2014-03-23 09:03:10

标签: javascript node.js requirejs karma-runner

我一直试图将业力设置为与Require.js一起使用几天(然后使用带有角度的需求)并且令人惊讶地令人沮丧。这是我的文件树在这个例子中的样子:

$ tree
.
|-- public
|   |-- index.html
|   |-- src
|       |-- app.js
|       `-- main.js
|-- config
|   |-- karma.conf.js  
|-- lib
|   |-- jquery.js
|   |-- require.js
|   `-- underscore.js
|-- src
|   |-- app.js
|   `-- main.js
`-- test
    |-- appSpec.js
    `-- test-main.js

注意:

我正在处理的这个存储库是karma requirejs example中使用的存储库的克隆。 karma example githubs' code和我的代码之间的唯一区别是对文件目录结构的3次更改:

  1. /karma.conf.js

        ==> /config/karma.conf.js
    
  2. / src /

        ==> /public/src/
    
  3. /index.html

        ==> /public/index.html
    
  4. 因此。现在,为了让一切正常,你必须:

    1. 从conf目录中运行karma,
    2. karma.conf.js文件中的
    3. 更改:

      basePath: '',
      

      basePath: '../',
      
    4. 并在test / test-main.js(这是requirejs.config文件)中更改:

    5. requirejs.config({

      // Karma serves files from '/base' 
      baseUrl: '/base/src',
      

      requirejs.config({
          // Karma serves files from '/base'
          baseUrl: '../base/src',
      

      但似乎无论我做什么,我都会继续得到同样的错误:

      ERROR: 'There is no timestamp for /base/src/app.js!'
      Uncaught Error: Script error for: app
      http://requirejs.org/docs/errors.html#scripterror
      at /node_modules/requirejs/require.js:141
      

          Uncaught Error: Script error for: jquery
      http://requirejs.org/docs/errors.html#scripterror
      at /node_modules/requirejs/require.js:141
      
          Uncaught Error: Script error for: underscore
      http://requirejs.org/docs/errors.html#scripterror
      at /node_modules/requirejs/require.js:141
      

      ^ tldr:check the repo

1 个答案:

答案 0 :(得分:3)

答案是添加

paths: {
   'jquery': '../lib/jquery',
   'underscore': '../lib/underscore'
   'app' : '../public/src/app'     <====

  },

而在原始示例中,代码app.js通过以下方式添加:

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

所以将它添加到路径会更加重要。

paths: {
    'jquery': '../lib/jquery',
    'underscore': '../lib/underscore',
},