SyntaxError: неожиданный токен '>' - PullRequest
0 голосов
/ 10 мая 2019

Запуск Karma + WebPack + Jasmine.

karma.conf.js

var webpackConfig = require('./webpack.test');

module.exports = function (config) {
  var _config = {
    basePath: '../src',

    frameworks: ['jasmine', 'stacktrace', 'es6-shim'],

    files: [
      { pattern: "../config/base.spec.ts" },
    ],

    preprocessors: {
      '../config/base.spec.ts': ['webpack', 'sourcemap']
    },

    webpack: webpackConfig,

    webpackMiddleware: {
      logLevel: 'error'
    },

    webpackServer: {
      noInfo: true
    },

    coverageReporter: {
      type: 'in-memory'
    },

    remapCoverageReporter: {
      'text-summary': null,
      json: './.coverage/coverage.json',
      html: './.coverage/html'
    },

    htmlDetailed: {
      splitResults: false,
      useHostedBootstrap: true,
      dir: '../.reports',
      refreshTimeout: 30000
    },

    reporters: ['progress', 'coverage', 'remap-coverage', 'htmlDetailed'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false
  };

  config.set(_config);
};

base.spec.ts

import "core-js";
import "es6-shim";
import "zone.js/dist/zone";
import "zone.js/dist/long-stack-trace-zone";
import "zone.js/dist/proxy";
import "zone.js/dist/sync-test";
import "zone.js/dist/jasmine-patch";
import "zone.js/dist/async-test";
import "zone.js/dist/fake-async-test";

import { TestBed } from "@angular/core/testing";
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from "@angular/platform-browser-dynamic/testing";

// Hide stack traces
Error.stackTraceLimit = 0;
// Show stack traces
//Error.stackTraceLimit = Infinity;

TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());


const context = require.context("../src", true, /\.spec\.ts$/);
context.keys().forEach(context);

Мой код TypeScript компилируется очень хорошо,Однако, когда я ссылаюсь на sinon в моем spec-файле, используя import * as sinon from 'sinon';, я получаю следующую ошибку:

SyntaxError: Unexpected token '>'
  at webpack:///node_modules/sinon/pkg/sinon-esm.js:21406 <- /Users/...

Эта строка содержит первую лямбда-функцию в этом файле.

Похоже, что Karma + WebPack не переносит код в ES5, а Phantom не нравится лямбда-функция.Как вы можете видеть, я загружаю es6-shim в моем base.spec.js и karma-es6-shim в моей конфигурации кармы.

Как мне это исправить?

...