【问题标题】:Mocha + Babel + React ModulesMocha + Babel + React 模块
【发布时间】:2015-08-06 09:06:01
【问题描述】:

如何配置 Mocha/Babel,以便在需要时也转换我的 node_modules 文件夹中的模块?

我正在 ES6 中使用 react 开发一个应用程序。

我包含一个通过npm install 安装的外部反应组件。

当我运行测试 (mocha --recursive --compilers js:babel/register) 时,测试失败并出现来自外部模块的 Unexpected token '<' 错误。

原因是外部react模块在加载的时候需要转换。这是在模块package.json 中指定的,如下所示:

"browserify": {
  "transform": [
    "reactify"
  ]
}

它在浏览器上运行良好。源代码使用browserify -t babelify 编译。使用来自package.jsonbrowserify 信息,并在加载时正确转换模块。

如何配置 Mocha/Babel 以将这一点也考虑在内?
或者如何配置 Mocha/Babel 来编译 node_modules 文件夹中的模块?
或者有什么其他方法可以解决这个问题?

【问题讨论】:

    标签: javascript reactjs mocha.js browserify babeljs


    【解决方案1】:

    默认情况下,Babel 不会转译 node_modules 目录。如果您想禁用此功能,可以将ignore 选项设置为false

    在命令行中,您可以将--ignore false 传递给babelbabel-node 以允许Babel 转译node_modules 目录。

    为了您的使用,您可以传递 Mocha 的 --compilers js:babel/register 选项来转译 Mocha 访问的文件。为了让 Babel 的 register hook 能够转译 node_modules 目录,你可以使用 .babelrc 文件配置 Babel。该文件应包含以下内容:{ "ignore": false }

    这些选项中的任何一个都应该允许您使用这个外部模块(因为 Babel 会转译它)。

    【讨论】:

    • 这对我不起作用,使用上面列出的 .babelrc 配置,我仍然得到未转译的 node_modules。
    猜你喜欢
    • 2019-07-30
    • 2021-11-04
    • 2017-02-15
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    相关资源
    最近更新 更多