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

时间:2018-03-24 18:55:23

标签: angular typescript webpack karma-webpack

使用webpack 4升级我的角度项目后,使用karma运行单元测试时出现以下错误

  

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

     

[at-loader]检查是在一个单独的过程中开始的......

     

[at-loader]检查完成1509错误   [at-loader]:子进程无法处理请求:TypeError:不能   读取属性' externalModuleIndicator'未定义的    在Object.isExternalModule   (demo-app \ node_modules \ typescript \ lib \ typescript.js:13733:20)at   Object.getAllDependencies   (demo-app \ node_modules \ typescript \ lib \ typescript.js:75788:46)at   Object.getAllDependencies   (demo-app \ node_modules \ typescript \ lib \ typescript.js:76133:80)at   processEmit   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \检查\ runtime.ts:451:24)   在   演示应用内\ node_modules \真棒-打字稿装载机\ SRC \检查\ runtime.ts:602:6   在Object.send   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \检查\ runtime.ts:48:6)   在Checker.req   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \检查\ checker.ts:100:15)   在Checker.emitFile   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \检查\ checker.ts:105:15)   在变换   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \ index.ts:132:26)   在transformationFunction   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \ index.ts:74:40)   在编译器   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \ index.ts:85:21)   在Object.loader   (演示应用内\ node_modules \真棒-打字稿装载机\ SRC \ index.ts:16:12)   在LOADER_EXECUTION   (demo-app \ node_modules \ loader-runner \ lib \ LoaderRunner.js:119:14)at at   runSyncOrAsync   (demo-app \ node_modules \ loader-runner \ lib \ LoaderRunner.js:120:4)at at   iterateNormalLoaders   (demo-app \ node_modules \ loader-runner \ lib \ LoaderRunner.js:229:2)at at   iterateNormalLoaders   (演示应用内\ node_modules \装载机浇道\ lib中\ LoaderRunner.js:218:10)       < ---最后几个GC --->

     

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

     

< --- JS stacktrace --->

     

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

     

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

包装Json:

  

真棒-打字稿装载机:5.0.0-0   卡玛的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'),
          {}
        )
    ]
};

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

更新到typescript@2.8.1可以解决'externalModuleIndicator'问题(但可能会破坏其他问题)

答案 2 :(得分:1)

我可以将awesome-typescript-loader替换为ts-loader

来解决类似问题

这里有类似的讨论

https://github.com/webpack-contrib/karma-webpack/issues/331

答案 3 :(得分:0)

对于Yarn用户:在终端中运行yarn install