【问题标题】:nuxtjs issue with IE11 compatibility_ object assignIE11 兼容性的 nuxtjs 问题_对象分配
【发布时间】:2019-06-08 02:02:00
【问题描述】:

我被 IE 兼容性所困扰。 (我的vue版本是3.1.0,nuxt是2.3.4)

它与Object.assign 保持错误。这是我尝试过的列表。

  • babel-preset-vue-app(https://www.npmjs.com/package/babel-preset-vue-app)。听说不支持vue2.X。我按照this post 上的描述进行操作。构建源代码时出错。

  • nuxt.config.js 中添加 babel-polyfill。它没有错误,但页面上仍然出现 Object.assign 错误。

  • 安装babel/plugin-transform-object-assign。它在构建过程中也没有任何错误,而是在页面中得到了 Object assign 东西。

有什么选项我可以尝试支持 IE11 的兼容性?

这是我目前的.babelrcnuxt.config.js

.babelrc

{
    "presets": [
        [
            "env",
            {
                "modules": false
            }
        ],
        [ "vue-app",
            {
                "useBuiltIns": true,
                "targets": {
                    "ie": 9,
                    "uglify": true
                }
            }
        ]
    ],
    "plugins": [
        "@babel/plugin-transform-object-assign",
        "transform-vue-jsx",
        [
            "module-resolver",
            {
                "root": [
                    "./src"
                ],
                "alias": {
                    "~sbdc": "./src/sbdc"
                }
            }
        ]
    ]
}

nuxt.config.js 中的构建选项

build: {
    babel: {
        presets: [
            ['vue-app', {
                useBuiltIns: true,
                targets: { ie: 9, uglify: true }
            }
            ]
        ]
    },
    optimization: {
        splitChunks: {
            chunks: 'all',                  
            maxInitialRequests: Infinity,       
            minSize: 0,                     
            cacheGroups: {              
              vendor: {
                  test: /[\\/]node_modules[\\/](babel-polyfill|moment|lodash|axios|get-size|jquery|js-cookie|jwt-decode|numeral|vuetify)[\\/]/,
                  name: 'utilityVendor'
                }
            }
        }
    },
    output: {
        publicPath: serviceConfig.pwa_publicPath || false
    },
    extractCSS: true,
    plugins: [
        new webpack.ProvidePlugin( {
            $: 'jquery',
            jQuery: 'jquery',
            'window.jQuery': 'jquery',
        } )
    ]
}

感谢您分享解决方案!

======= 编辑于 0114 =============

Etra 信息 #1。 当我在 ie11 浏览器上查看错误时,它会自动转换代码,如下所示

return {layout:"popup",data:[{resultBody:Object.assign(Object.create(null), ... sorry, sensitive data

而原来的代码是……

asyncData: async function ({req}) {
    return {
        resultBody: req.body,
    };
},

req.bodybody-parser 支持。

【问题讨论】:

标签: vue.js internet-explorer-11 compatibility nuxt.js babel-polyfill


【解决方案1】:

经过几个小时的挣扎,我用不好的方法解决了这个问题(在我看来)。

我只是将object-assign polyfill js 添加到 nuxt.js

module.exports = {

    ...

    head: {
        script: [ { src: '/js/object-assign.js' } ]
    },

    ... 

};

但我仍然想知道将 babel-polyfill 应用到 nuxt 项目中的正确方法。

【讨论】:

  • 从您的上一篇文章中,我可以看到您已经解决了您的问题。我建议您在 24 小时后将该帖子标记为该问题的已接受答案,这可能会在将来帮助其他社区成员解决类似问题。感谢您的理解。
  • @Deepak-MSFT 我明白了。我会在 24 小时后接受,但在我看来,解决方案似乎不够干净。在 npm 存储库中有几个 babel 预设(@vue/babel-preset-app@nuxt/babel-preset-app@nuxtjs/babel-preset-app),并且没有使用它们的规则。 (也不清楚如何申请)
猜你喜欢
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2014-08-20
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
相关资源
最近更新 更多