Node.js 如何在大型nodejs/express应用程序中使用babel运行时

Node.js 如何在大型nodejs/express应用程序中使用babel运行时,node.js,ecmascript-6,babeljs,Node.js,Ecmascript 6,Babeljs,我想在大型/复杂的nodejs应用程序中使用babel运行时。我不想使用babel require钩子,因为应用程序很大,当我尝试使用它时,会出现以下错误: RangeError: Maximum call stack size exceeded 我只想传输一些JS文件,至少现在是这样 babel文档对于运行时支持来说有点神秘。安装babel runtime后,它们提供: require(“babel”).transform(“code”,{optional:[“runtime”]}) 该代码

我想在大型/复杂的nodejs应用程序中使用babel运行时。我不想使用babel require钩子,因为应用程序很大,当我尝试使用它时,会出现以下错误:

RangeError: Maximum call stack size exceeded
我只想传输一些JS文件,至少现在是这样

babel文档对于运行时支持来说有点神秘。安装babel runtime后,它们提供:

require(“babel”).transform(“code”,{optional:[“runtime”]})


该代码包含在哪里?“代码”真的只是一个字符串吗?我已尝试将其添加到我的主app.js文件(express 3应用程序)中。不幸的是,这不起作用

我不能完全理解你的问题,但我想我可以回答一部分

如中所述,
transform()
函数接受一个假定为要传输的源代码的字符串,并返回一个包含三个属性的对象:

  • code
    生成的代码
  • map
    代码的源映射
  • ast
    语法树
这意味着,如果要在文件夹中传输代码,对于要传输的每个文件,应使用
fs
实用程序读取文件,将其交给
transform()
函数,并将返回对象中的
code
属性值写入输出文件夹

为了简化读取文件的步骤,您可以使用babel提供的函数
transformFile


至于你提到的express应用程序的问题,我无能为力,除非你提供更多信息

你能详细说明一下吗?在构建时是否会发生该错误?当你运行你的代码时?它发生在应用程序启动时。也许我不知道你的问题是什么。您只需将
运行时
添加到对代码运行的转换列表中即可。如果您是通过CLI进行编译的,则需要执行
--可选运行时
,如果您使用的是其他内容,则需要将选项传递给该选项。
.transform
示例是,如果您以编程方式使用Babel API编译文件,那么您不会从自己的代码中调用它,而是构建脚本。你现在建筑得怎么样?