3

使用 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”(demo-app\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 在 Object.send (demo-app\node_modules\awesome-typescript-loader\src\checker\runtime.ts:48:6) 在 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) 在 transformationFunction (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) 在 runSyncOrAsync (demo-app\node_modules\loader-runner\lib\LoaderRunner.js:120:4) 在 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 业力 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'),
          {}
        )
    ]
};

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

4

4 回答 4

5

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

于 2019-01-15T09:23:48.827 回答
2

更新typescript@2.8.1可以解决“externalModuleIndicator”问题(但可能会破坏其他东西)

于 2018-04-08T11:42:04.830 回答
2

awesome-typescript-loader我能够通过替换来解决类似的问题ts-loader

有一个类似的讨论here

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

于 2018-06-04T14:03:03.160 回答
0

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

于 2019-11-05T06:57:20.293 回答