React SSR(Express)项目中npm test时@babel/preset-env调试信息屏蔽方法咨询
解决@babel/preset-env DEBUG输出干扰测试日志的问题
这问题我之前调试项目时也踩过坑!你看到的一堆@babel/preset-env: DEBUG输出,根源就是你.babelrc里的"debug": true配置——这个选项的作用就是强制输出preset-env的编译细节日志,不管测试结果如何都会打印,确实会严重干扰测试输出的可读性。
下面给你几个可行的解决办法:
方案1:全局关闭debug模式(最简单直接)
直接修改你的.babelrc,把@babel/preset-env配置里的"debug": true改成false,或者直接删掉这个字段。修改后的配置如下:
{ "presets": [ [ "@babel/preset-env", { "debug": false, // 改成false或者直接删除这一行 "useBuiltIns": "usage", "corejs": 3 } ], "@babel/preset-react" ], "plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime"] }
这样所有环境下(包括测试)都不会再输出那堆冗余的debug日志了。
方案2:仅在开发环境开启debug(兼顾开发调试和测试整洁)
如果开发时还需要依赖这些debug日志来排查编译问题,不想全局关闭,可以利用Babel的环境特定配置,只在开发环境开启debug,测试/生产环境自动关闭。修改.babelrc如下:
{ "presets": [ "@babel/preset-react" ], "plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime"], "env": { "development": { "presets": [ [ "@babel/preset-env", { "debug": true, "useBuiltIns": "usage", "corejs": 3 } ] ] }, "test": { "presets": [ [ "@babel/preset-env", { "debug": false, "useBuiltIns": "usage", "corejs": 3 } ] ] }, "production": { "presets": [ [ "@babel/preset-env", { "debug": false, "useBuiltIns": "usage", "corejs": 3 } ] ] } } }
Babel会根据当前的NODE_ENV环境变量自动加载对应的配置,测试时只要你的测试脚本是用NODE_ENV=test npm test执行的,就会自动关闭debug日志。
额外注意:检查webpack配置的冲突
你的webpack.config.js里也配置了babel-loader的presets,但Babel会优先读取.babelrc的配置,所以只要改.babelrc就生效。不过如果后续在webpack里单独给babel-loader加了debug: true,也要记得同步修改。
内容的提问来源于stack exchange,提问作者giaosl
相关产品推荐
相关产品推荐

