3

Karma で TS ファイルをトランスパイルするように Webpack を構成しました。Node と CoreJS の型も含めました。ただし、テストを実行しようとすると...

ERROR in ./test/karma/test.bundle.ts
(18,30): error TS2339: Property 'context' does not exist on type 'NodeRequire'.

を使用して webpack-env を追加しようとしましnpm install --save-dev @types/webpack-envたが、さらに多くのエラーが発生します。

ERROR in /.../node_modules/@types/webpack-env/index.d.ts
(183,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'require' must be of type 'NodeRequire', but here has type 'RequireFunction'.

ERROR in /.../node_modules/@types/webpack-env/index.d.ts
(232,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'module' must be of type 'NodeModule', but here has type 'Module'.

ERROR in ./test/karma/test.bundle.ts
(18,30): error TS2339: Property 'context' does not exist on type 'NodeRequire'.

私のカルマ設定は次のようになります...

var webpack = require("webpack");
module.exports = function(config) {
  var webpackConfig = require("../../webpack.config");
  // TODO: Can we get rid on this?
  // We need to remove entry points and plugins
  webpackConfig.plugins = [
    // IMPORTANT!!!! Without this source maps fail to show up.
    new webpack.SourceMapDevToolPlugin({
      filename: null, // if no value is provided the sourcemap is inlined
      test: /\.(ts|js)($|\?)/i // process .js and .ts files only
    })
  ];
  //This is used to remap can access (Based on https://github.com/sshev/karma-remap-coverage)
  webpackConfig.ts = {
    compilerOptions: {
      inlineSourceMap: true,
      sourceMap: false
    }
  };
  webpackConfig.module.postLoaders = [
    {
      test: /^((?!\.spec\.ts).)*.ts$/,
      exclude: /(node_modules|bower_components)/,
      loader: 'istanbul-instrumenter'
    }
  ];
  webpackConfig.entry = {};

  var configuration = {
    autoWatch: true,
    basePath: "",
    browsers: ["Chrome"],
    colors: true,
    concurrency: Infinity,
    coverageReporter: {
      type: 'in-memory'
    },
    exclude: [
      "node_modules"
    ],
    files: [
      { pattern: "./test.bundle.ts", watched: true },
    ],
    frameworks: ["jasmine"],
    htmlReporter: {
      outputFile: "../../reports/units.html"
    },
    logLevel: config.LOG_INFO,
    port: 9876,
    preprocessors: {
      "./test.bundle.ts": ["webpack", "sourcemap" ],
    },
    remapCoverageReporter: {
      "text-summary": null,
      html: "./reports/coverage/html"
    },
    reporters: ["progress", "coverage", "remap-coverage", "html"],
    singleRun: false,
    webpack: webpackConfig,
    webpackMiddleware: { stats: "errors-only"}
  };
  config.set(configuration);
}; 

バージョン

webpack 1.14.0、ノード v6.9.2、Typescript 2.1.4

4

0 に答える 0