Friday 9 June 2017

Module name __ not loaded with karma and requirejs

I have some repositories (A, B, C and TestRepo) all of them in local, i get karma to load spec files from repos A or B or C with a param (node script).

Now im trying to transpile the files cause some test are using import so i need babel. I configured babel as a preprocessor and it seems like it is working but know i get this error:

Uncaught Error: Module name "builder" has not been loaded yet for context: _. Use require([])

I tried all configs i know but still not working.

My karma.config.js is this:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', 'requirejs'],
    files: [
      'test-main.js'
    ],
    exclude: [
    ],
    preprocessors: {
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
    concurrency: Infinity
  });
}

My test-main.js for requirejs:

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

Object.keys(window.__karma__.files).forEach(function (file) {
  if (TEST_REGEXP.test(file)) {
    var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, '')
    allTestFiles.push(normalizedTestModule)
  }
})

require.config({
  baseUrl: '/base',
  deps: allTestFiles,
  callback: window.__karma__.start
})

And my node file, where i set karma files, preprocessor and so on base on the repository i got from params is this:

const cfg     = require('karma').config;
const stopper = require('karma').stopper;
const runner  = require('karma').runner;
const Server  = require('karma').Server;
const path    = require('path');

const REPOSITORY = process.argv[2] || '';
let karmaConfig = cfg.parseConfig(path.resolve('./karma.conf.js'), { port: 9876 } );
let BASE_PATH;

if (REPOSITORY !== 'all') {
    BASE_PATH = `/Users/fernando.delolmo/${REPOSITORY}`;
    karmaConfig.files.push({pattern: BASE_PATH + '/test/**/*.spec.js'});
    karmaConfig.files.push({pattern: BASE_PATH + '/src/**/*.js', included: true});
    karmaConfig.preprocessors[BASE_PATH + '/src/**/*.js']       = ['babel'];
    karmaConfig.preprocessors[BASE_PATH + '/test/**/*.spec.js'] = ['babel'];
    karmaConfig.exclude.push(BASE_PATH + '/node_modules/**/*.spec.js');   
} else {
    BASE_PATH = '/Users/fernando.delolmo/';
    karmaConfig.files.push({pattern: BASE_PATH + '**/test/**/*.spec.js'});
    karmaConfig.files.push({pattern: BASE_PATH + '**/src/**/*.js', included: true});
    karmaConfig.preprocessors[BASE_PATH + '**/src/**/*.js']       = ['babel'];
    karmaConfig.preprocessors[BASE_PATH + '**/test/**/*.spec.js'] = ['babel'];
    karmaConfig.exclude.push(BASE_PATH + '**/node_modules/**/*.spec.js');   
}

karmaConfig.basePath = BASE_PATH;

var server = new Server(karmaConfig, function(exitCode) {
  process.exit(exitCode);
});

server.start();

server.on('browser_start', function() {
    runner.run(karmaConfig, function(exitCode) {
        process.exit(exitCode);
    });
});

server.on('browser_complete', function() {
    stopper.stop(karmaConfig, function(exitCode) {
        process.exit(exitCode);
    });
});

Its my first time configuring karma, requirejs and babel all together so any help will be great :)



via Fernando Del Olmo

No comments:

Post a Comment