2015-08-11 3 views
0

Чтобы упростить настройку файла конфигурации karma, я использую переменную для хранения определенной части пути.Karma Invalid config file

var publicfolder = "public" 
var mypath = "packages/vendor/package/"; 

files: [ 
    publicfolder+'/assets/libs/jquery/dist/jquery.js', 
    publicfolder+'/assets/libs/angular/angular.js', 
    publicfolder+'/assets/libs/**/*.js', 
    publicfolder+'/app/**/*.js', 
    mypath +'/public/app/**/*.test.js', 
    mypath +'/public/app/**/*.html' 
], 

preprocessors: { 
    mypath +'/public/app/**/*.html':['ng-html2js'] 
}, 

Однако, когда я запускаю тест, он пришел в заблуждение, говоря

E:\www\project\karma.conf.js:83 
    mypath +'/public/app/**/*.html':['ng-html2js'] 
     ^
ERROR [config]: Invalid config file! 
    SyntaxError: Unexpected token + 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 

Мой вопрос ПОЧЕМУ? Почему я не могу поставить переменную там? Почему это хорошо, чтобы поместить его в массив files, но не в preprocessors?

ответ

1

preprocessors - объект, и вы не можете поместить выражения в ключ объекта с помощью initializer notation. Вы можете использовать выражения, если вы устанавливаете ключ, используя square bracket notation.

Так что в этом случае вы могли бы сделать что-то вроде этого:

var mypath = "packages/vendor/package/"; 
var preprocessors = {}; 
preprocessors[mypath +'/public/app/**/*.html'] = ['ng-html2js']; 

Это прекрасно, чтобы использовать выражение в files массиве, потому что вы просто создавать регулярные строки, ключи не возражали.