【问题标题】:Generator Runtime error when added babel-preset-env and babel-preset-stage-2添加 babel-preset-env 和 babel-preset-stage-2 时生成器运行时错误
【发布时间】:2018-09-06 03:26:17
【问题描述】:

我必须使用 babel-preset-env 和 babel-preset-stage-2 才能将 webpack 用于包含扩展运算符的代码。之后,我成功地使用 webpack 构建了我的包,但是这次我在运行时遇到了生成器运行时错误。

所以首先我尝试在这个页面中做解决方案,babel-polyfill 但我的团队不希望我使用它,而是他们要求我使用 transform-runtime 插件,所以我安装了它并将它放在 babelrc 文件中但是仍然得到相同的生成器运行时错误,对此有任何想法吗?我还应该怎么做?

这是 babelrc 文件

{
  "presets": [
    "env",
    "stage-2",
    "es2015"
  ],
  "plugins": [
    "transform-async-to-generator",
    [
      "transform-runtime",
      {
        "helpers": false,
        "polyfill": false,
        "regenerator": true
      }
    ]
  ]
}

webpack 配置文件

var path = require('path')

module.exports = {
  entry: path.resolve(__dirname, 'partner/index.js'),
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'partner_bundle.js'
  },
  target: 'web',
  module: {
    rules: [
      {
        test: /\.js$/, // Check for all js files
        loader: 'babel-loader',
        query: {
          presets: ['babel-preset-env', 'babel-preset-stage-2'].map(
            require.resolve
          )
        },
        exclude: /node_modules\/(?!other-module)/
      }
    ]
  },
  stats: {
    colors: true
  },
  devtool: 'source-map',
  resolve: { symlinks: false }
}

package.json 中的 babel 和 webpack 版本

"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-stage-0": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",

"webpack": "^4.0.1",
"webpack-cli": "^2.0.9"

【问题讨论】:

  • 你用的是什么版本的 webpack 和 babel?一些较新版本的语法发生了一些变化。
  • 我在原帖中写了 babel wen webpack 版本。
  • 我添加了 'babel-preset-es2015' 和 'babel-preset-env' 因为以前我只使用 'babel-preset-es2015' 时没有收到此错误,但仍然获得相同的运行时间错误

标签: javascript babeljs babel-preset-env


【解决方案1】:

尝试使用:

{
  "env": {
    "production": {
      "plugins": ["transform-react-constant-elements"]
    }
  }
}

https://babeljs.io/docs/usage/babelrc/

【讨论】:

  • 我做到了,但仍然遇到同样的错误。这是我的 babelrc 文件。 {“env”:{“生产”:{“插件”:[“transform-react-constant-elements”,“transform-async-to-generator”,“transform-react-constant-elements”],“预设” : [ "env", "stage-2" ] } } }
  • 这个函数状态最后报错。 updateState (state) { this.peer.set(${this.basePath}/states/, state) } 我注意到类定义中还有一个状态 this.state,所以当我将它命名为 state1 时,它已修复。或者,如果将其分配给另一个变量,我 const state1 = state 再次固定。
  • 我认为你试图让你的 .babelrc 文件比它需要的更复杂。我认为您不需要“预设”,而且我不确定转换。似乎您正在尝试使用较旧的 babel 配置和较新的版本。尝试使用简单的设置。现在很多事情都是自动处理的,而过去你必须手动完成。
猜你喜欢
  • 2016-09-12
  • 2018-07-02
  • 2019-10-23
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 2021-08-24
相关资源
最近更新 更多