首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Requirejs和Karma:无法检测源文件

Requirejs和Karma:无法检测源文件
EN

Stack Overflow用户
提问于 2014-04-09 05:22:22
回答 1查看 1.1K关注 0票数 2

我正在尝试使用Karma和requirejs来测试我的角脚本,但是我一直收到这个错误。

Firefox28.0.0(MacOSX10.9)错误:“/base/app/public/js/test/unit/controllersSpec.js!‘没有时间戳警告web服务器: 404: /base/app/public/js/test/unit/controllersSpec.js Firefox28.0.0(MacOSX10.9)错误:用于: /Users/Masanori/Desktop/FlippySurvey/node_modules/requirejs/require.js:166 /unit/controllersSpec http://requirejs.org/docs/errors.html#scripterror的脚本错误

我试着以不同的方式更改baseUrl,但是我仍然不断地收到错误。有人能帮我解决这个问题吗?我会感谢你的帮助!

我的目录结构如下

代码语言:javascript
复制
app/
   public/
       vendors/
            ....
       js/
          controllers.js
          controllers/
                   mainctrl.js
test
   unit
        controllersSpec.js
   karma.conf.js
   test-main.js

下面是我的test-main.js和karma.conf.js

代码语言:javascript
复制
test-main.js'

var allTestFiles = [];
var TEST_REGEXP = /(spec|test)\.js$/i;

var pathToModule = function(path) {
  return path.replace(/^\/base\//, '').replace(/\.js$/, '');
};

Object.keys(window.__karma__.files).forEach(function(file) {
  if (TEST_REGEXP.test(file)) {
    // Normalize paths to RequireJS module names.
    allTestFiles.push(pathToModule(file));
  }
});

require.config({
  paths:{
    'angular'     : '/base/app/public/vendors/angular/angular',
    'angularMocks': '/base/app/public/vendors/angular-mock/angular-mock',
    'domReady'    : '/base/app/public/vendors/requirejs-domready/domready',
    'angularRoute': '/base/app/public/vendors/angular-route/angular-route'
  },

  baseUrl: '/base/app/public/js',

  shim: {
    'angular' :{'exports':'angular'},
    'angularRoute' :['angular'],
    'angularMocks':{
      deps: ['angular'],
      'exports':'angular.mock'
    }
  },

  deps: allTestFiles,

  callback: window.__karma__.start
});

karma.conf.js

代码语言:javascript
复制
module.exports = function(config) {
     config.set({

    basePath: '',

    frameworks: ['jasmine', 'requirejs'],

    files: [
      {pattern: 'unit/*.js', included: false},
      {pattern: 'unit/**/*.js', included: false},
      {pattern: '../app/public/js/**/*.js', included: false},
      {pattern: '../app/public/js/*.js', included: false},
      {pattern: '../app/public/vendors/**/*.js', included: false},
      'test-main.js'
    ],

    exclude: [

    ],

    preprocessors: {

    },

    reporters: ['progress'],

    port: 9876,

    colors: true,

    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,

    autoWatch: true,

    browsers: ['Firefox'],

    singleRun: false
  });
};
EN

回答 1

Stack Overflow用户

发布于 2014-04-09 16:21:25

好吧。

我只需要去掉一些代码,当你用需求做业力时,业力会自动插入这些代码。

在test-main.js中

代码语言:javascript
复制
var pathToModule = function(path) {
  return path.replace(/^\/base\//, '').replace(/\.js$/, '');
};
Object.keys(window.__karma__.files).forEach(function(file) {
   if (TEST_REGEXP.test(file)) {
   // Normalize paths to RequireJS module names.
    allTestFiles.push(pathToModule(file));
   }
});

删除pathToModule

代码语言:javascript
复制
Object.keys(window.__karma__.files).forEach(function(file) {
   if (TEST_REGEXP.test(file)) {
      allTestFiles.push(file);
    }
});

现在业力读取所有的测试文件!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22953444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档