账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue-cli3 搭建的项目ie11 报语法错误
    36
    0

    问题描述

    用vue-cli3 搭建的项目ie11 下面报语法错误

    问题出现的环境背景及自己尝试过哪些方法

    • 尝试引入@babel/polyfill,配置 babel.config.js文件如下,失败
    module.exports = {
      presets: [
        '@vue/app',
        {
          useBuiltIns: 'entry',
          polyfills: [
            'es6.promise',
            'es6.symbol',
            // promise polyfill alone doesn't work in IE,
            // needs this as well. see: #1642
            'es6.array.iterator',
            // this is required for webpack code splitting, vuex etc.
            'es6.promise',
            // #2012 es6.promise replaces native Promise in FF and causes missing finally
            'es7.promise.finally',
          ],
        },
      ],
    };
    

    相关代码

    https://github.com/ycshill/vu... 上的v2分支代码

    你期待的结果是什么?实际看到的错误信息又是什么?

    SCRIPT1002: 语法错误

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • ≈幸福的真殘忍 普通会员 1楼

      在Vue CLI 3中,由于IE11的浏览器不支持某些特定的CSS属性或API,导致在IE11中创建的Vue应用可能无法正常工作。以下是一些可能导致IE11报错的常见原因和解决方案:

      1. CSS 引用错误: Vue CLI 3默认使用的是ES6的@import语法,但IE11不支持。解决此问题的方法是将CSS导入到项目根目录下的src文件夹,然后在HTML文件中引用这个文件。例如,假设你的CSS文件在src/css/styles.css中,那么HTML文件可能如下所示:

      html <link rel="stylesheet" href="/src/css/styles.css">

      然后在你的Vue组件中,你可以像这样引用CSS:

      ```html

      ```

      1. Web worker: Vue CLI 3不支持IE11的Web worker特性,导致组件无法通过JavaScript异步请求外部资源。如果你的组件需要使用Web worker进行异步加载或处理大量数据,那么你需要使用现代的库,如fetchaxios,在Webpack配置中指定这些库作为module.js的依赖。例如:

      ```javascript import fetch from 'fetch'; import axios from 'axios';

      export default { components: { YourComponent }, mounted() { const url = 'https://your-api.com/data'; axios.get(url) .then(response => { // 在这里处理响应数据 }) .catch(error => { // 在这里处理错误 }); } }; ```

      1. ES6 arrow function: Vue CLI 3默认使用ES6的arrowFunction语法,但在IE11中可能会遇到语法错误。例如,如果你尝试使用letconst关键字定义一个函数,那么可能会导致报错,如Uncaught TypeError: Cannot read property 'let' of undefined。为了解决这个问题,你可以使用ES6的const关键字,如下所示:

      javascript export default { components: { YourComponent }, template: `<div> <YourComponent /> </div>` };

      1. Proxy: Vue CLI 3默认使用ES6的Proxy对象来处理跨域请求,但在IE11中可能会遇到跨域请求无法正常处理的错误。为了在IE11中处理跨域请求,你可以使用fetchwithCredentials选项,如:

      ```javascript import fetch from 'fetch'; import axios from 'axios';

      export default { components: { YourComponent }, mounted() { const url = 'https://your-api.com/data'; const options = { method: 'GET', headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE', 'Access-Control-Allow-Headers': 'Content-Type' }, withCredentials: true };

      fetch(url, options)
        .then(response => {
          // 在这里处理响应数据
        })
        .catch(error => {
          // 在这里处理错误
        });
      

      } }; ```

      1. 使用正确的@media属性: Vue CLI 3支持@media属性来处理媒体查询,但在IE11中可能会出现媒体查询不起作用的错误。例如,如果你尝试在<style>标签中使用@media screen and (min-width: 768px)来定义媒体查询,那么可能会导致报错,如Uncaught TypeError: Cannot read property 'screen' of undefined。为了解决这个问题,你可以使用@mediascreen属性,如下所示:

      css @media screen and (min-width: 768px) { /* Your media query rules here */ }

      1. 兼容性问题: Vue CLI 3在开发过程中需要考虑兼容性问题,包括不同浏览器的CSS支持、JavaScript版本、以及DOM操作等。例如,如果你的Vue应用需要使用v-on事件监听器,但IE11不支持v-on,你可以使用v-bind语法,如下所示:

      ```html

      ```

      请注意,以上解决方案适用于大多数情况下,但在某些特定情况下,可能需要使用更复杂的方法或依赖于现代的库和工具。在实际应用中,你应该根据项目的需求和目标浏览器的兼容性情况,选择合适的解决方案。

    • liQvQil 普通会员 2楼

      在Vue CLI 3中,由于IE11的浏览器不支持某些特定的CSS属性或API,导致在IE11中创建的Vue应用可能无法正常工作。以下是一些可能导致IE11报错的常见原因和解决方案:

      1. CSS 引用错误: Vue CLI 3默认使用的是ES6的@import语法,但IE11不支持。解决此问题的方法是将CSS导入到项目根目录下的src文件夹,然后在HTML文件中引用这个文件。例如,假设你的CSS文件在src/css/styles.css中,那么HTML文件可能如下所示:

      html <link rel="stylesheet" href="/src/css/styles.css">

      然后在你的Vue组件中,你可以像这样引用CSS:

      ```html

      ```

      1. Web worker: Vue CLI 3不支持IE11的Web worker特性,导致组件无法通过JavaScript异步请求外部资源。如果你的组件需要使用Web worker进行异步加载或处理大量数据,那么你需要使用现代的库,如fetchaxios,在Webpack配置中指定这些库作为module.js的依赖。例如:

      ```javascript import fetch from 'fetch'; import axios from 'axios';

      export default { components: { YourComponent }, mounted() { const url = 'https://your-api.com/data'; axios.get(url) .then(response => { // 在这里处理响应数据 }) .catch(error => { // 在这里处理错误 }); } }; ```

      1. ES6 arrow function: Vue CLI 3默认使用ES6的arrowFunction语法,但在IE11中可能会遇到语法错误。例如,如果你尝试使用letconst关键字定义一个函数,那么可能会导致报错,如Uncaught TypeError: Cannot read property 'let' of undefined。为了解决这个问题,你可以使用ES6的const关键字,如下所示:

      javascript export default { components: { YourComponent }, template: `<div> <YourComponent /> </div>` };

      1. Proxy: Vue CLI 3默认使用ES6的Proxy对象来处理跨域请求,但在IE11中可能会遇到跨域请求无法正常处理的错误。为了在IE11中处理跨域请求,你可以使用fetchwithCredentials选项,如:

      ```javascript import fetch from 'fetch'; import axios from 'axios';

      export default { components: { YourComponent }, mounted() { const url = 'https://your-api.com/data'; const options = { method: 'GET', headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE', 'Access-Control-Allow-Headers': 'Content-Type' }, withCredentials: true };

      fetch(url, options)
        .then(response => {
          // 在这里处理响应数据
        })
        .catch(error => {
          // 在这里处理错误
        });
      

      } }; ```

      1. 使用正确的@media属性: Vue CLI 3支持@media属性来处理媒体查询,但在IE11中可能会出现媒体查询不起作用的错误。例如,如果你尝试在<style>标签中使用@media screen and (min-width: 768px)来定义媒体查询,那么可能会导致报错,如Uncaught TypeError: Cannot read property 'screen' of undefined。为了解决这个问题,你可以使用@mediascreen属性,如下所示:

      css @media screen and (min-width: 768px) { /* Your media query rules here */ }

      1. 兼容性问题: Vue CLI 3在开发过程中需要考虑兼容性问题,包括不同浏览器的CSS支持、JavaScript版本、以及DOM操作等。例如,如果你的Vue应用需要使用v-on事件监听器,但IE11不支持v-on,你可以使用v-bind语法,如下所示:

      ```html

      ```

      请注意,以上解决方案适用于大多数情况下,但在某些特定情况下,可能需要使用更复杂的方法或依赖于现代的库和工具。在实际应用中,你应该根据项目的需求和目标浏览器的兼容性情况,选择合适的解决方案。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部