title: An error was thrown in afterAll ReferenceError: module is not defined, Karma/Jasmine test error in nodejs
body: <p>I'm trying to write tests for m nodejs simple application with karma and jasmine as a framework. I'm using karma-coverage for preprocessor.
  Here is the structure of the project:
  <a href="https://i.stack.imgur.com/wCd80.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/wCd80.png" alt="enter image description here"></a></p>
  
  <p><strong>package.json</strong></p>
  
  <pre><code>{
    "name": "tests",
    "version": "1.0.0",
    "description": "tests with karma in jasmine framework",
    "directories": {
      "test": "test"
    },
    "scripts": {
      "test": "karma start karma.conf.js"
    },
    "author": "",
    "license": "MIT",
    "devDependencies": {
      "jasmine-core": "^3.4.0",
      "karma": "^4.2.0",
      "karma-chrome-launcher": "^3.1.0",
      "karma-coverage": "^1.1.2",
      "karma-jasmine": "^2.0.1"
    }
  }
  </code></pre>
  
  <p><strong>karma.conf.js</strong></p>
  
  <pre><code>// Karma configuration
  // Generated on Sat Aug 17 2019 09:37:53 GMT+0500 (Uzbekistan Standard Time)
  
  module.exports = function (config) {
      config.set({
  
          // base path that will be used to resolve all patterns (eg. files, exclude)
          basePath: '',
  
  
          // frameworks to use
          // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
          frameworks: ['jasmine'],
  
  
          // list of files / patterns to load in the browser
          files: [
              'js/*.js',
              'test/*.test.js'
          ],
  
  
          // list of files / patterns to exclude
          exclude: [],
  
  
          // preprocess matching files before serving them to the browser
          // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
          preprocessors: {
              'test/*.test.js': ['coverage']
          },
  
  
          // test results reporter to use
          // possible values: 'dots', 'progress'
          // available reporters: https://npmjs.org/browse/keyword/karma-reporter
          reporters: ['progress', 'coverage'],
  
  
          // web server port
          port: 9876,
  
  
          // enable / disable colors in the output (reporters and logs)
          colors: true,
  
  
          // level of logging
          // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
          logLevel: config.LOG_INFO,
  
  
          // enable / disable watching file and executing tests whenever any file changes
          autoWatch: true,
  
  
          // start these browsers
          // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
          browsers: ['Chrome'],
  
  
          // Continuous Integration mode
          // if true, Karma captures browsers, runs the tests and exits
          singleRun: false,
  
          // Concurrency level
          // how many browser should be started simultaneous
          concurrency: Infinity,
  
          // optionally, configure the reporter
          coverageReporter: {
              type: 'html',
              dir: 'coverage/'
          }
      })
  }
  </code></pre>
  
  <p>Whenever I run <code>npm test</code> I'm getting the following error:</p>
  
  <p><a href="https://i.stack.imgur.com/ODGnu.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ODGnu.png" alt="enter image description here"></a></p>
  
  <p><strong>custom-lodash.js</strong></p>
  
  <pre><code>class CustomLodash {
  
      compact(array) {
          let newArray = [];
          for (let i = 0; i &lt; array.length; i++) {
              if (!array[i] || array[i] === undefined || array[i] === null) {
                  continue;
              }
  
              this.push(array[i])(newArray);
          }
          return newArray;
      }
  
  
  }
  
  let _ = new CustomLodash;
  
  module.exports = {
      compact: _.compact
  };
  </code></pre>
  
  <p><strong>custom-lodash.test.js</strong></p>
  
  <pre><code>describe("CustomLodash", function () {
  
      let utils;
      //This will be called before running each spec
      beforeEach(function () {
          console.log('before each');
          utils = new CustomLodash();
      });
  
  
      describe("when calc is used to peform basic math operations", function () {
          it("creates an array with all falsey values removed", function () {
              // expect(utils.compact([0, 1, false, 2, '', 3])).toBe([1, 2, 3]);
              let compact = utils.compact([0, 1, false, 2, '', 3]);
              console.log('before each in it is: ', compact);
              expect(compact).toEqual([1, 2, 3]);
             //console.log('is defined ', expect(compact).toEqual([1, 2, 3]));
          });
      })
  
  
  });
  </code></pre>
  
  <p>As you can see, the <code>console.log</code> is giving output, which means the file is being read. But, when I call <code>toBe()</code> or <code>toEqual()</code> I can see that the output is undefined (checked this in <code>console.log</code> too). 
  Any help is really <strong>appreciated</strong>. I searched for many answers and realted questions, but can't fix this one.</p>