Ошибка ссылки: не удается найти переменную: требуется (Angular 2 [финальная версия], Webpack, Karma, Jasmine)

#angular #jasmine #webpack #karma-jasmine

#angular #jasmine #webpack #karma-jasmine

Вопрос:

Я пытаюсь протестировать компонент angular 2, используя jasmine с Karma. Когда я запускаю скрипт npm на терминале Mac, я получаю-

 PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
ReferenceError: Can't find variable: require
at /Users/Admin/Downloads/kamal/development/self/provat/node_modules/core-js/es6/array.js:1
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 0 of 0 ERROR (0.274 secs / 0 secs)
Chrome 53.0.2785 (Mac OS X 10.10.4) ERROR
Uncaught ReferenceError: require is not defined
at /Users/Admin/Downloads/kamal/development/self/provat/node_modules/core-js/es6/array.js:1
Chrome 53.0.2785 (Mac OS X 10.10.4): Executed 0 of 0 ERROR (0.339 secs / 0 secs)
  

Следующий код взят из karma.conf.js

 'use strict';

module.exports = function(config) {
config.set({
    autoWatch: true,
    browsers: ['Chrome', 'PhantomJS'],
    files: [
        '../../node_modules/core-js/es6/**.js',
        '../../node_modules/core-js/es7/reflect.js',
        '../../node_modules/zone.js/dist/zone.js',
        'karma.entry.js'
    ],
    frameworks: ['jasmine'],
    logLevel: config.LOG_INFO,
    phantomJsLauncher: {
        exitOnResourceError: true
    },
    preprocessors: {
        'karma.entry.js': ['webpack', 'sourcemap']
    },
    reporters: ['dots'],
    singleRun: false,
    webpack: require('../webpack/webpack.test.js'),
    webpackServer: {
        noInfo: true
    }
});
};
  

Следующий код взят из karma.entry.js

 require('core-js');
require('reflect-metadata');
require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
require('zone.js/dist/sync-test');

var browserTesting = require('@angular/platform-browser-dynamic/testing');
var coreTesting = require('@angular/core/testing');

coreTesting.setBaseTestProviders(
browserTesting.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
browserTesting.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS
);

var context = require.context('../../src/modules/', true, /.spec.ts$/);

context.keys().forEach(context);

Error.stackTraceLimit = Infinity;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000;
  

Следующий код взят из webpack.test.js

 'use strict';

var path = require('path');
var webpack = require('webpack');

module.exports = {
devtool: 'inline-source-map',

// resolving extensions for webpack
resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.es6', '.js', '.json'],
    modulesDirectories: ['node_modules'],
    root: path.resolve('.', 'src')
},

module: {
    preLoaders: [{
        test: /.ts$/,
        // include: srcDir,
        exclude: /node_modules/,
        loader: 'tslint-loader'
    }],
    loaders: [
        {
            test: /.(html|css)$/,
            // include: srcDir,
            // exclude: /node_modules/,
            loaders: ['raw-loader']
        },

        {
            test: /.ts$/,
            // include: srcDir,
            exclude: /node_modules/,
            loaders: ['ts-loader']
        }

    ]
},

tslint: {
    failOnHint: true,
    configuration: require('../../tslint.json'),
    emitErrors: true
},
}
  

Следующее из package.json

 {
 "name": "angular2-test",
 "version": "0.0.1",
 "description": "A collection of Angular2 UI components and beyond",
 "main": "index.js",
"scripts": {
    "start": "webpack-dev-server --inline --hot",
    "dev": "webpack --progress --profile --watch",
    "prod": "NODE_ENV=production webpack  --progress --profile",
    "prod:watch": "NODE_ENV=production webpack --progress --profile --watch",
    "test": "karma start ./testconfig/karma/karma.conf.js",
    "test:headless": "karma start ./testconfig/karma/karma.conf.js --browsers PhantomJS"
 },
"repository": {
    "type": "git",
    "url": "git https://github.com/ksharifbd/provat.git"
},
"keywords": [
    "angular2",
    "webpack"
],
"author": "Kamal Sharif",
"license": "MIT",
"bugs": {
    "url": "https://github.com/ksharifbd/provat/issues"
},
"homepage": "https://github.com/ksharifbd/provat#readme",
"dependencies": {
    "@angular/common": "2.0.1",
    "@angular/compiler": "2.0.1",
    "@angular/core": "2.0.1",
    "@angular/forms": "2.0.1",
    "@angular/http": "2.0.1",
    "@angular/platform-browser": "2.0.1",
    "@angular/platform-browser-dynamic": "2.0.1",
    "@angular/router": "3.0.1",
    "@angular/upgrade": "2.0.1",
    "core-js": "2.4.1",
    "reflect-metadata": "0.1.8",
    "rxjs": "5.0.0-beta.12",
    "ts-loader": "0.8.2",
    "typescript": "2.0.3",
    "webpack": "1.13.2",
    "zone.js": "0.6.25"
},
"devDependencies": {
    "@types/core-js": "0.9.34",
    "@types/jasmine": "2.2.34",
    "@types/node": "6.0.41",
    "autoprefixer": "6.5.0",
    "clean-webpack-plugin": "0.1.10",
    "codelyzer": "1.0.0-beta.0",
    "css-loader": "0.25.0",
    "extract-text-webpack-plugin": "1.0.1",
    "file-loader": "0.9.0",
    "html-webpack-plugin": "2.22.0",
    "jasmine-core": "2.5.2",
    "karma": "1.3.0",
    "karma-chrome-launcher": "2.0.0",
    "karma-jasmine": "1.0.2",
    "karma-phantomjs-launcher": "1.0.2",
    "karma-sourcemap-loader": "0.3.7",
    "karma-webpack": "1.8.0",
    "phantomjs-prebuilt": "2.1.12",
    "postcss-import": "8.1.2",
    "postcss-loader": "0.13.0",
    "postcss-url": "5.1.2",
    "raw-loader": "0.5.1",
    "style-loader": "0.13.1",
    "tslint": "3.15.1",
    "tslint-loader": "2.1.5",
    "url-loader": "0.5.7",
    "webpack-dev-server": "1.16.1"
}
}