【问题标题】:Add "proposal-object-rest-spread" plugin to babel.config.js to fix Microsoft Edge error SCRIPT1028将“proposal-object-rest-spread”插件添加到 babel.config.js 以修复 Microsoft Edge 错误 SCRIPT1028
【发布时间】:2020-02-23 00:11:26
【问题描述】:

编辑:这个问题似乎已通过 Microsoft Edge Chromium 的新测试版得到修复。 (2020 年 1 月 18 日)

我需要将此Babel plugin 添加到 babel.config.js 以摆脱 Microsoft Edge 浏览器错误

SCRIPT1028:预期的标识符、字符串或数字

我安装了最新的包并将它们添加到 package.json。 以下是我尝试过的,但在运行 npm run build 后它并没有转换代码:

babel.config.js

require("@babel/core").transform("code", {});

module.exports = {
  presets: ["@vue/app"],
  plugins: ["@babel/plugin-proposal-object-rest-spread"]
};

package.json

{
  "name": "example",
  "version": "0.2.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@babel/polyfill": "^7.6.0",
    "core-js": "^2.6.5",
    "date-fns": "^2.4.1",
    "firebase": "^7.0.0",
    "lodash": "^4.17.15",
    "register-service-worker": "^1.6.2",
    "vue": "^2.6.10",
    "vue-flickity": "^1.2.1",
    "vue-router": "^3.0.3",
    "vuetify": "^2.0.0",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "@babel/cli": "^7.6.4",
    "@babel/core": "^7.6.4",
    "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
    "@babel/preset-env": "^7.6.3",
    "@vue/cli-plugin-babel": "^3.11.0",
    "@vue/cli-plugin-eslint": "^3.11.0",
    "@vue/cli-plugin-pwa": "^3.11.0",
    "@vue/cli-service": "^3.11.0",
    "@vue/eslint-config-prettier": "^5.0.0",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.16.0",
    "eslint-plugin-prettier": "^3.1.0",
    "eslint-plugin-vue": "^5.0.0",
    "material-design-icons-iconfont": "^5.0.1",
    "prettier": "^1.18.2",
    "sass": "^1.17.4",
    "sass-loader": "^7.1.0",
    "stylus": "^0.54.5",
    "stylus-loader": "^3.0.2",
    "terser-webpack-plugin": "^2.1.2",
    "uglifyjs-webpack-plugin": "^2.2.0",
    "vue-cli-plugin-vuetify": "^0.6.3",
    "vue-template-compiler": "^2.6.10",
    "vuetify-loader": "^1.2.2"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "@vue/prettier"
    ],
    "rules": {},
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions"
  ]
}

如何设置 Babel 插件以正确转换代码?

编辑:错误截图 - EDGE INSIDER 18 指向这段代码:

【问题讨论】:

  • 可能是其他依赖相关,尝试使用如下代码更新所有依赖:$ npm install -g npm-check-updates $ ncu -u $ npm install
  • 你解决了这个问题吗?在积极的情况下,您能否更新以显示使用 babel 配置? tks
  • @Prisco 没有解决。我仍在寻找解决方法
  • 我在 Microsoft Edge 44.18362.449.0 上遇到了同样的问题,但我在使用 Beta 版本 83.0.478.37 时没有看到 SCRIPT1028 错误。我想知道是否有针对旧版本浏览器的实际修复或解决方法。

标签: vue.js plugins config microsoft-edge babeljs


【解决方案1】:

由于我无法尝试您要检查的代码,我建议使用库配置中提到的以下 babel 配置:

  plugins: [["@babel/plugin-proposal-object-rest-spread", { "loose": true, "useBuiltIns": true }]]

【讨论】:

  • 您的示例适用于 .babelrc,不适用于 babel.config.js。如何为 babel.config.js 重写?
【解决方案2】:

babel.config.js 应该导出一个function 并且应该位于项目的根目录中。

你的配置应该和这个类似?

module.exports = function(api) {
    api.cache(true);

    const presets = ['@vue/app'];
    const plugins = ['@babel/plugin-proposal-object-rest-spread'];
    // Or try this
    // const plugins = [['@babel/plugin-proposal-object-rest-spread', { loose: true, useBuiltIns: true }]];

    return {
        presets,
        plugins,
    };
};

【讨论】:

  • 我在“Edge”和“Edge Insider”中尝试了这两个示例,但错误SCRIPT1028: Expected identifier, string or number 仍然存在。它适用于 Chrome/Firefox。 “EdgeInsider”(即将推出的 Edge 浏览器)基于 Chromium,您知道为什么会出现此错误吗?
  • 有趣。您可以分享最少的复制品还是您的项目是开源的?更好地调试会有所帮助。
  • 我稍后会上传一个最小的复制品。顺便说一句:这是导致 EDGE INSIDER 18 中错误的一段代码:imgur.com/a/yLxLQUt(截图)
  • 好的。看起来它没有转换 ... 语法。没有repro很难调试?
猜你喜欢
  • 2021-06-03
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
相关资源
最近更新 更多