1

我正在尝试使用 karma-webpack 构建用于 karma 的打字稿测试。

最近我的测试已经停止运行。在开发人员控制台中,有这样的行,对应于包含我的测试的每个文件:

来自“<a href="http://localhost:9876/base/tests/testFile.ts?[HASH]" rel="nofollow noreferrer">http://localhost:9876/base/tests/testFile.ts 的脚本?[HASH]”由于不允许的 MIME 类型而被阻止

有这样的脚本标签是由业力生成的:

<script type="text/javascript" src="/base/tests/testFile.ts?[HASH]" crossorigin="anonymous"></script>

(在这两种情况下,都[HASH]对应一个时间戳)

如果我查看与错误消息相关的文件,看起来编译成功了——每个文件都包含由 typescript 编译器生成的 JS,以及所有与 webpack 相关的东西。

我的业力配置如下所示:

module.exports = function (config) {
    config.set({
        plugins: [
            require('karma-firefox-launcher'),
            require('karma-webpack'),
            require('karma-tap')
        ],

        basePath: '',
        frameworks: ['tap'],
        files: ['tests/**/*.ts'],

        preprocessors: {
            'tests/**/*.ts': ['webpack']
        },

        webpack: {
            module: {
                rules: [
                    {
                        test: /\.tsx?$/,
                        exclude: /node_modules/,
                        use: [
                            "babel-loader",
                            "ts-loader"
                        ]
                    }
                ]
            },
            resolve: {
                extensions: [".webpack.js", ".web.js", ".js", ".ts", ".tsx", ".css"]
            },
            node: {
                fs: 'empty'
            }
        },

        reporters: ['progress'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['Firefox'],
        singleRun: false
    });
};

我曾尝试使用 Chromium 而不是 Firefox,但我得到了类似的错误,所以我猜这个问题不是特定于浏览器的。

如何防止脚本被阻止并让我的测试再次运行?


软件包版本:

"karma": "1.4.1",
"karma-firefox-launcher": "1.0.0",
"karma-tap": "3.1.1",
"karma-webpack": "2.0.2",
"ts-loader": "2.0.0",
"typescript": "2.2.0",
"webpack": "2.2.1",
4

1 回答 1

5

我发现了一些建议将其添加到业力配置文件的问题:

mime: {
    "text/x-typescript": ["ts", "tsx"]
}

现在我的测试在 Firefox 和 Chrome 中再次运行。

于 2017-02-07T19:36:41.213 回答