javascript - 带有 NodeJS 的 Babel 不工作传播运算符

标签 javascript node.js webpack babeljs babel-loader

我正在使用 Babel (7.5.0) 和最新的 NodeJS (12.x),因此扩展运算符已经由 NodeJS 处理,我不想让 babel 弄乱它。

这是我的 .babelrc :

{
    "plugins": [
        "@babel/plugin-proposal-class-properties",
        "@babel/plugin-transform-runtime"
    ],
    "presets": [
        [
            "@babel/preset-env",
            {
                "modules": "commonjs",
                "targets": {
                    "node": "current"
                },
                "useBuiltIns": "usage"
            }
        ]
    ]
}

这是我的错误:

ERROR in ./src/utils/logger/logger.js
Module build failed: ReferenceError: Unknown helper objectSpread2
    at loadHelper (/app/node_modules/@babel/helpers/lib/index.js:238:27)
    at Object.getDependencies (/app/node_modules/@babel/helpers/lib/index.js:279:21)
    at File.addHelper (/app/node_modules/@babel/core/lib/transformation/file/file.js:204:33)
    at PluginPass.addHelper (/app/node_modules/@babel/core/lib/transformation/plugin-pass.js:31:22)
    at PluginPass.ObjectExpression (/app/node_modules/@babel/plugin-proposal-object-rest-spread/lib/index.js:379:25)
    at newFn (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/visitors.js:193:21)
    at NodePath._call (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:53:20)
    at NodePath.call (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:40:17)
    at NodePath.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:88:12)
    at TraversalContext.visitQueue (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitMultiple (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:85:17)
    at TraversalContext.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:144:19)
    at Function.traverse.node (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/index.js:94:17)
    at NodePath.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:95:18)
    at TraversalContext.visitQueue (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitMultiple (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:85:17)
    at TraversalContext.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:144:19)
    at Function.traverse.node (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/index.js:94:17)
    at NodePath.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:95:18)
    at TraversalContext.visitQueue (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitSingle (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:90:19)
    at TraversalContext.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:146:19)
    at Function.traverse.node (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/index.js:94:17)
    at NodePath.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:95:18)
    at TraversalContext.visitQueue (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitMultiple (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:85:17)
    at TraversalContext.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:144:19)
    at Function.traverse.node (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/index.js:94:17)
    at NodePath.visit (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:95:18)
    at TraversalContext.visitQueue (/app/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:118:16)
 @ ./src/app.js 5:0-40
 @ multi ./src/app.js

我读到我需要安装一些插件,但我认为这是针对较旧的 nodejs 版本,我不明白为什么我需要一个插件来实现 nodejs 的内置功能。<​​/p>

我该怎么做?

更新:

我在那里创建了一个问题:https://github.com/babel/babel-loader/issues/798

最佳答案

这里是 Babel 维护者。

我们在 v7.5.0 中有一个错误(很快将在 v7.5.1 中修复)。您有两种可能的解决方法:

  1. 运行 npm install @babel/helpers(或使用 yarn):这将强制 npm 下载 @babel/helpers v7.5.0,其中包含缺少的助手。 如果你也在使用 @babel/transform-runtime,请确保 @babel/runtime 是 v7.5.0
  2. 如果您使用的是 yarn,则可以将 @babel/plugin-proposal-object-rest-spread 锁定到不受此问题影响的旧版本。将此代码添加到您的 package.json 中:

    "resolutions": {
      "**/@babel/plugin-proposal-object-rest-spread": "7.4.4"
    }
    

编辑 这应该在 v7.5.1 中修复,请更新

关于javascript - 带有 NodeJS 的 Babel 不工作传播运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900902/

相关文章:

javascript - 没有显示 Ajax 附件的文件数据

javascript - 或者 JavaScript 中的声明?

mysql - 在连接表中插入附加数据

javascript - 用于列出组件的所有依赖项的 NPM API

ruby-on-rails - 通过 webpacker 编译 js 导致 : SassError: expected "{"

javascript - 找不到模块,无法解析

javascript - Firebase 函数 : sync with Algolia doesn't work

javascript - 防止点击事件 javascript

node.js - 在我将 session 设置为存储在 db 中之后,它在注册之前会有一个延迟。 Node/ express / express session ,

reactjs - React JS 在某些浏览器中不起作用