使用 babel-node 时如何将选项传递给节点

How to pass options to node when using babel-node

Babel CLI 文档 (https://babeljs.io/docs/usage/cli/):

babel-node [options] [ -e script | script.js ] [arguments]

但是当尝试增加为 Node 分配的内存时:

babel-node --max-old-space-size=16384 script.js

参数--max-old-space-size=16384似乎被忽略了

有人知道这是否可行,如果不可行 - 一些解决方法?

编辑:(2016 年 7 月)从版本 6.11.4 开始,现在支持所有变体。问题中发布的示例现在有效。


6.11.3 版本的 Babel 还不支持 v8Flags 的所有变体。

Node 本身支持使用下划线 (--max_old_space_size) 或破折号 (--max-old-space-size) 传递此标志。

相比之下,babel-node 仅在使用下划线指定时才支持这些标志,并且不支持格式 --flag=value.

有一个 open pull request 解决了这个问题。遗憾的是,目前没有使用值指定 v8Flags 的解决方法。

有一个错误可能与节点 v10 有关... v8flags v2 运行不正常,您需要使用当前的 v8flags 3.1.1。

我正在使用 yarn 作为全局节点工具,这里是用于快速修补的快速命令(可能会在每个 yarl global add 上重做)...

如果使用 babel-cli 6 yarn 全局添加 v8flags rm -rf ~/.config/yarn/global/node_modules/babel-cli/node_modules/v8flags

你可以使用 babel 7,但是你的 babel 配置有很多变化 纱线全局添加@babel/core@babel/node

我正在使用 Babel 7,这确实有效。

babel-node --max-old-space-size=16384 script.js

简单的测试方法是将大小降低到 100KB,您将很快 运行 内存不足。

您还可以使用环境变量绕过 babel-node 必须一起支持标志。

NODE_OPTIONS=--max-old-space-size=16384 babel-node [options] [ -e script | script.js ] [arguments]

在我的例子中,我需要使用 --tls-min-v1.0 但 babel-node 不知道那个标志。

NODE_OPTIONS=--tls-min-v1.0 成功了。