2

我的应用程序使用 aurelia 和 webpack 构建在 asp.net core spa 中(基于 Rob Eisenberg 的教程)。它在 chrome 和 firefox 上完美运行,但在我需要支持的主要浏览器 IE 中,它存在热模块重新加载问题。我收到此错误: webpack-hot-middleware's client requires EventSource to work. You should include a polyfill if you want to support this browser

npm install event-source-polyfill 在 devdependencies 中运行package.json,我补充说:

    "webpack-hot-middleware": "^2.18.0",
    "event-source-polyfill": "^0.0.12"

然后在我的webpack.config.js,我添加

    module.exports = {
       entry: ['app': ['event-source-polyfill', 'aurelia-bootstrapper'],
          // ...
    };

如此处建议:https ://github.com/jods4/aurelia-webpack-build/wiki/Polyfills

我还添加了

    new webpack.ProvidePlugin({
           es: 'event-source-polyfill'
       }),

然后我在里面 导入plugins了. 我住在 node-modules 文件夹中。我应该在某处手动复制它吗?那么我该如何实际使用它呢?我不知道在 aurelia 中该怎么做才能告诉它为 IE 使用这个 polyfill。到目前为止,错误仍然相同。webpack.config.jsimport 'event-source-polyfill/src/eventsource.min.js'event-source-polyfill

4

1 回答 1

0

在我回答你的问题之前,让我说 Alex Taran 是对的,即使你添加了 event-source polyfill,HMR 也不会与 IE 一起使用,并且没有人有兴趣让它与 IE 一起使用。

然而,实际的问题是如何通过 webpack 添加事件源 polyfill,这确实可以做到。就是这样。

在文件底部附近,webpack.config.js您会找到插件部分。您需要webpack.ProvidePlugin如图所示添加或修改。在这个片段中,它添加了 jquery,并且事件源插件的行被注释掉了。

    plugins: [
        new webpack.DefinePlugin({ IS_DEV_BUILD: JSON.stringify(isDevBuild) }),
        new webpack.ProvidePlugin({
            //"window.EventSource": ['event-source-polyfill', 'EventSourcePolyfill'],
            $: "jquery", jQuery: "jquery", "window.jQuery": "jquery"
        }),
        new HtmlWebpackPlugin({ template: 'Views/Shared/_LayoutTemplate.cshtml', filename: "../../Views/Shared/_Layout.cshtml", inject: false, metadata: {}, alwaysWriteToDisk: true }),
        new AureliaPlugin({ aureliaApp: "boot" }),
        new GlobDependenciesPlugin({ "boot": ["ClientApp/**/*.{ts,html}"] }),
        new ModuleDependenciesPlugin({}),
        extractCSS
    ]

显然你必须先用 npm 添加它。

于 2019-09-27T05:56:09.497 回答