babel-node文档中有一个严厉的警告:
不适用于生产环境
不应在生产环境中使用
babel-node
。它过于沉重,由于缓存存储在内存中,导致内存使用率高。您还将始终经历启动性能惩罚,因为整个应用程序需要即时编译。
让我们来分析一下:
内存使用——什么意思?所有模块在应用程序的整个生命周期中都会在内存中“缓存”。他们在这里是什么意思?
启动时间——这怎么成了性能问题?部署Web应用程序已经需要几秒钟(如果在CI中测试,则需要几分钟)。启动时间增加半秒钟毫无意义。实际上,如果启动时间在任何地方都很重要,那么在开发中比在生产中更重要。如果您频繁重启Web服务器以至于启动时间成为问题,则面临的问题更大。
require('babel-register')
) 的警告,尽管这可能与babel-node几乎完全相同。例如,您可以执行node -r babel-register server.js
并获得与babel-node server.js
相同的行为。(我们公司在数百个微服务中都会这么做,没有出现问题。)Babel的警告是虚假信息,还是我遗漏了什么?如果警告有效,则为什么不适用于Babel require hook?
相关: 在生产环境中使用babel-node是否可以 - 但是那个问题只是询问是否建议在生产环境中使用,答案只引用官方建议,即“不建议”。相比之下,我质疑官方建议背后的原因。