Mocha + Babel + React 模块

3
我该如何配置Mocha/Babel才能在需要时转换我node_modules 文件夹中的模块?
我正在使用ES6和React开发应用程序。
我包含了一个通过npm install安装的外部React组件。
当我运行测试(mocha --recursive --compilers js:babel/register)时,测试会由于外部模块中的错误Unexpected token '<'而失败。
原因是当加载外部react模块时它需要进行转换。这可以在modules package.json 中指定:
"browserify": {
  "transform": [
    "reactify"
  ]
}

它在浏览器上运行良好。源代码是通过browserify -t babelify编译的。使用package.json中的browserify信息并且在加载时正确地转换模块。

如何配置Mocha/Babel以考虑这一点?
或如何配置Mocha/Babel以编译node_modules文件夹中的模块?
或任何其他解决方法?

1个回答

4
默认情况下,Babel不会转译node_modules目录。如果您想禁用此功能,可以将ignore选项设置为false
在命令行中,您可以向babelbabel-node传递--ignore false,以允许Babel转译node_modules目录。
对于您的用途,您可以将--compilers js:babel/register选项传递给Mocha来转译Mocha访问的文件。为了让Babel的注册钩子转译node_modules目录,您可以使用.babelrc文件配置Babel。该文件应包含以下内容:{"ignore": false}
这两个选项任意一个都应该允许您使用此外部模块(因为Babel将对其进行转译)。

1
ignore 接受的值不仅限于布尔类型。参考链接:https://dev59.com/aFwZ5IYBdhLWcg3wINPQ。 - Nacho Coloma
这对我没有用,即使使用上面列出的 .babelrc 配置,我仍然得到未转译的 node_modules。 - Colby Blair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接