【问题标题】:Still receive syntax error for dynamic import with babel-plugin-syntax-dynamic-import when running with mocha使用 mocha 运行时,使用 babel-plugin-syntax-dynamic-import 动态导入仍然会收到语法错误
【发布时间】:2018-06-08 09:48:31
【问题描述】:

所有 babel 模块/插件都在最新版本的 babel v6 上。 Mocha 在 v4.0.1 上。

设置:

// .babelrc
{
   presets: [
      "stage-3",
      [
         "env",
         {
           "targets": {
              "browsers": [
                "last 2 versions"
              ],
              "node": "current"
           }
         }
      ]
      "react"
   ],
   plugins: ["transform-runtime", "syntax-dynamic-import"]
}


// mocha.opts
--recursive
--reporter progress
--require babel-polyfill
--require babel-register
--timeout 20000

所以当我运行我的测试套件时,我仍然得到: error stack trace.

我不得不想象它与 babel-register 和 syntax-dynamic-import 不能正常协同工作有关。因为当我在 webpack 中将它与 babel-loader 一起使用时,我在编译时没有遇到任何语法错误。

【问题讨论】:

  • 想通了。我搬到了动态导入节点。我以前试过这个,但仍然失败。它仍然失败的原因是因为某处缓存了一些东西。可能来自 mocha 或 babel。因此,如果我更改了文件或测试 dynamic-import-node 开始按预期工作。
  • 不知道为什么 syntax-dynamic-import 不能与 babel-register 一起使用。

标签: node.js webpack mocha.js babeljs


【解决方案1】:

Satyajit Sahoo 关于 babeljs slack 的回答为我澄清了问题:

syntax-dynamic-import只会启用babylon中的语法,也就是说babylon可以解析代码而不会出现语法错误。代码import(...) 仍然存在,哪个节点不理解,您仍然需要对其进行转译。 dynamic-import-node 将 import(...) 转换为节点可以理解的 require。在客户端,不需要转换步骤,因为 Webpack 理解语法并进行捆绑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2018-08-21
    • 2021-01-03
    • 2018-09-22
    • 2022-01-18
    相关资源
    最近更新 更多