使用 karma 和 webpack 4 运行单元测试时无法读取未定义的属性“externalModuleIndicator”

rao*_*air 3 typescript webpack karma-webpack angular

使用 webpack 4 升级我的 angular 项目后,我在使用 karma 运行单元测试时遇到以下错误

[at-loader] 使用 typescript 中的 typescript@2.7.2 和 demo-app-app\src\tsconfig.json 中的“tsconfig.json”。

[at-loader] 在单独的进程中开始检查...

[at-loader] 检查完成,出现 1509 个错误 [at-loader]:子进程无法处理请求:TypeError:无法读取 Object.isExternalModule 处未定义的属性“externalModuleIndicator”(演示应用程序\node_modules\typescript\lib\typescript .js:13733:20) 在 Object.getAllDependencies (demo-app\node_modules\typescript\lib\typescript.js:75788:46) 在 Object.getAllDependencies (demo-app\node_modules\typescript\lib\typescript.js:76133 :80) 在 processEmit (demo-app\node_modules\awesome-typescript-loader\src\checker\runtime.ts:451:24) 在 demo-app\node_modules\awesome-typescript-loader\src\checker\runtime.ts :602:6 at Object.send (demo-app\node_modules\awesome-typescript-loader\src\checker\runtime.ts:48:6) at Checker.req (demo-app\node_modules\awesome-typescript-loader\ src\checker\checker.ts:100:15) 在 Checker.emitFile (demo-app\node_modules\awesome-typescript-loader\src\checker\checker.ts:105:15) 在转换 (demo-app\node_modules\awesome-typescript-loader\src\index. ts:132:26) 在转换函数 (demo-app\node_modules\awesome-typescript-loader\src\index.ts:74:40) 在编译器 (demo-app\node_modules\awesome-typescript-loader\src\index. ts:85:21) 在 Object.loader (demo-app\node_modules\awesome-typescript-loader\src\index.ts:16:12) 在 LOADER_EXECUTION (demo-app\node_modules\loader-runner\lib\LoaderRunner。 js:119:14) at runSyncOrAsync (demo-app\node_modules\loader-runner\lib\LoaderRunner.js:120:4) at iterateNormalLoaders (demo-app\node_modules\loader-runner\lib\LoaderRunner.js:229: 2) 在 iterateNormalLoaders (demo-app\node_modules\loader-runner\lib\LoaderRunner.js:218:10) <--- 最后几次 GC --->

136168 毫秒:标记扫描 1255.3 (1435.8) -> 1242.3 (1435.8) MB,893.2 / 0.0 毫秒 [分配失败] [请求旧空间中的 GC]。137084 毫秒:标记扫描 1242.3 (1435.8) -> 1242.3 (1435.8) MB,915.6 / 0.0 毫秒 [分配失败] [请求旧空间中的 GC]。138055 毫秒:标记扫描 1242.3 (1435.8) -> 1248.2 (1408.8) MB,970.0 / 0.0 毫秒 [最后手段 gc]。139026 毫秒:标记扫描 1248.2 (1408.8) -> 1254.0 (1408.8) MB,971.0 / 0.0 毫秒 [最后手段 gc]。

<--- JS 堆栈跟踪 --->

==== JS 堆栈跟踪 ==========================================

致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足

包 Json:

真棒打字稿加载器:5.0.0-0 karma-webpack:2.0.4 webpack:4.1.1

var webpack = require('webpack');
var helpers = require('./helpers');

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

    resolve: {
        extensions: ['.ts', '.js']
    },

    mode: 'development',

    module: {
        loaders: [
            {
                test: /\.ts$/,
                loaders: ['awesome-typescript-loader', 'angular2-template-loader']
            },
            {
                test: /\.html$/,
                loader: 'html-loader'

            },
            {
                test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
                loader: 'null'
            },
            {
                test: /\.css$/,
                include: helpers.root('src', 'app'),
                loader: 'raw'
            },
            {
               enforce: 'post',
               test: /\.(js|ts)$/,
               loader: 'istanbul-instrumenter-loader',
               include: helpers.root('src'),
               exclude: [
                 /\.(e2e|spec)\.ts$/,
                 /node_modules/
               ]
            }
        ]
    },

    plugins: [
        new webpack.ContextReplacementPlugin(
          /angular(\\|\/)core(\\|\/)@angular/,
          helpers.root('./src'),
          {}
        )
    ]
};
Run Code Online (Sandbox Code Playgroud)

请注意,我能够毫无问题地运行我的 angular 项目,只有 UT 配置出现错误。

小智 5

使用“npm update”命令更新。它解决了我的上述错误问题。