【问题标题】:Vuetify/Lib Polyfilling for IE11 isn't working - SCRIPT1002: Syntax ErrorIE11 的 Vuetify/Lib Polyfilling 不起作用 - SCRIPT1002:语法错误
【发布时间】:2020-02-02 07:17:00
【问题描述】:

我正在尝试使用通常的 import Vuetify from "vuetify/lib" 引用 vuetify/lib,但是当我这样做时,应用程序在 IE11 中使用 SCRIPT1003: Expected ':' 阻塞。

如果我更改对 import Vuetify from "vuetify" 的引用 - 没有 /lib 部分 - 它不会引发错误。

请注意,我实际上还没有在任何地方使用 vuetify。我没有单个 Vuetify 组件或调用;我只是添加库。

现在我表面上已经被 IE11 包含并愉快地解析了 vuetify,我想使用一些组件。如果我将 任何 vuetify 组件放入我的模板中,IE11 会抛出 Script1002: Syntax Error 消息。

有没有人建议让它真正起作用?

Index.cshtml

<v-app>
  <div id="reportApp"></div>
</v-app>

入口点

// polyfills
import "core-js/stable";
import "regenerator-runtime/runtime";

import Vue from "vue"
import "@mdi/font/css/materialdesignicons.css"
import reportFilter from "./reportFilter.vue"

const options = {
    el: "#reportApp",
    render: h => h(reportFilter)
};

export default new Vue(options);

reportFilter.vue

<template>
    <div>
      <!-- this will throw a syntax error -->
      <v-progress-circular indeterminate color="primary"
      ></v-progress-circular>
    </div>
</template>

<script>
    import axios from 'axios'

    export default {
        name: 'report-filter',
        data: function(){
            return {
                dataTypeList: [
                    { value: "1", text: "one" },
                    { value: "2", text: "two" },
                    { value: "3", text: "three" }
                ]
            }
        },
    }

</script>

webpack.config.js

const path = require("path");
const fs = require("fs");
const { VueLoaderPlugin } = require("vue-loader");
const VuetifyLoaderPlugin = require("vuetify-loader/lib/plugin");

module.exports = {
    entry: jsEntries,  // setting jsEntries removed for clarity
    mode: "development",
    module: {
        rules: [
            // other rules for css/sass/etc removed for clarity
            /*javascript*/{
                test: /\.m?js$/,
                exclude: [
                    /node_modules/,
                    /bower_components/
                ],
                use: {
                    loader: "babel-loader",
                    options: {
                        presets: [
                            [
                                "@babel/preset-env",
                                {
                                    "targets": {
                                        "browsers": [
                                            "last 2 versions",
                                            "ie >= 11"
                                        ]
                                    },
                                    "corejs": "3",
                                    "useBuiltIns": "entry"
                                }
                            ]
                        ]
                    }
                }
            },
            /*vue*/{
                test: /\.vue$/i,
                use: "vue-loader"
            }
        ]
    },
    output: {
        filename: "[name].js",
        path: path.resolve(__dirname, "./wwwroot/dist/js/"),
        publicPath: "/wwwroot/dist/js/"
    },
    plugins: [
        new VueLoaderPlugin(),
        new VuetifyLoaderPlugin()
    ],
    resolve: {
        alias: {
            vue: "vue/dist/vue.js"
        }
    }
};

【问题讨论】:

  • 你消化了文档vuetifyjs.com/en/getting-started/… 吗?我不使用 Vuetify - 所以我这只是一个链接...
  • @madflow 是的,我已经尽力了,但我没有看到解决方案。
  • 同样的问题发生在我身上,我用谷歌搜索了每个角落寻找答案。我也尽力了,没有用。所以,如果有一天你找到了解决方案,请回到这里粘贴答案,谢谢。
  • 您的开发和生产过程中是否出现此错误?如果您尝试构建然后运行它会怎样。
  • 你能分享你的 package.json

标签: asp.net-core .net-core vuetify.js asp.net-core-mvc-2.0 babel-polyfill


【解决方案1】:

Vuejs 论坛中遇到类似问题的用户报告成功使用 babel 来填充此特定问题。

我的建议是安装 babel polyfill,将其导入你的 app.js 并配置 babel.config.js,如图所示 here

如果您要积极使用 Vuetify,您还应该在声明您的选项应用程序之前使用 Vue.use(Vuetify),否则 Vue 将不知道它需要使用该包。

【讨论】:

    【解决方案2】:

    在我这边 SCRIPT1002: Syntax Error 已通过更新 webpack-dev-server 解决。

    尝试将webpack-dev-server 版本更改为3.8.2 并再次删除node_modulesnpm install

    还有一个。

    // .babelrc

    {
      "presets": ["@babel/preset-env"]
    }
    

    // babel.config.js

    module.exports = {
      presets: ['@babel/preset-env']
    }
    

    可以通过三种方式安装 vuetify:

    默认安装

    第一个(和 推荐)方法是使用 vuetify-loader 或我们所说的 自动点菜。这将确保您的应用程序仅使用 需要的 Vuetify 的功能和样式,非常重要 减少应用程序的编译大小并设置您将在 一个新的 vue-cli-3 项目。请记住,从 vuetify/lib,会自动为您导入必要的样式。

    vue-cli a-la-carte 安装

    您也可以手动导入单个组件而无需 对于 vuetify-loader。这被认为是手动点菜。

    (关于你的工作:import Vuetify from 'vuetify'

    vue-cli 完整安装

    最后一个方法将导入和设置 Vuetify 的所有功能和 样式。如上所述,仍然建议您使用 vuetify-loader 如果可能的话。对于此安装,您需要 手动导入 Vuetify 样式。这也是使用时使用的过程 通过浏览器引导 Vuetify,而不是编译。

    import Vue from 'vue'
    import Vuetify from 'vuetify'
    import 'vuetify/dist/vuetify.min.css'
    
    Vue.use(Vuetify)
    
    const opts = {}
    
    export default new Vuetify(opts)
    

    祝你好运。

    【讨论】:

      【解决方案3】:

      适用于使用 Vue CLI 的人。 可以通过在 vue.config.js 中的 transpileDependencies 部分添加 npm 包名称(导致语法错误的包)来解决 IE 11 中 polyfill 的这种类型的问题,如https://cli.vuejs.org/guide/browser-compatibility.html#browserslist中描述的@

      在我的例子中是 3 个包,现在我的配置如下:

          transpileDependencies: [
          'vuetify',
          'query-string',
          'strict-uri-encode',
          'split-on-first'
        ],
      

      导致您将在浏览器控制台中找到的错误的包名称。转到错误详细信息,您应该在导致错误的代码行附近的某处找到包名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 2018-05-20
        • 2019-04-04
        • 2019-10-09
        • 1970-01-01
        相关资源
        最近更新 更多