将event-source-polyfill添加到aurelia中的webpack

时间:2018-03-23 02:06:09

标签: internet-explorer webpack aurelia polyfills webpack-hot-middleware

我的应用程序构建在带有aurelia和webpack的asp.net核心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-polyfillpackage.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'
       }),
<{1> plugins webpack.config.js内 然后我导入了import 'event-source-polyfill/src/eventsource.min.js'。 我的event-source-polyfill位于node-modules文件夹中。我应该手动将其复制到某个地方吗? 那我该如何实际使用呢? 我不知道在aurelia做什么告诉它使用这个polyfill IE。到目前为止,错误仍然是一样的。

1 个答案:

答案 0 :(得分:0)

在我回答您的问题之前,我想说亚历克斯·塔兰(Alex Taran)是对的,即使您添加了事件源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中添加它。