如何在运行时使用Babel从NodeJS评估es6代码?

时间:2019-05-20 20:55:34

标签: node.js transform babel

我正在尝试构建一个nodeJS工具来帮助我分析另一个AngularJS源代码。 这个想法是:

  • 阅读一些有角度的项目javascript文件
  • 对于每个文件,获取内容
  • eval文件中的内容
  • 做点事

我面临的问题是我的Angular源代码使用es6功能,如importexportarrow functions,...等等。而且我使用的NodeJS还不支持这些功能。

因此我尝试从我的Node应用程序代码中使用@babel/core transform(),但是它不起作用。我不断收到类似Unexpected identifier的错误,这意味着它不了解import {stuff} from 'here';的语法。

srcFiles.forEach(content => {
     try {
       (function() {
         eval(require("@babel/core").transform(content.text).code)
        }.call(window, angular));
    } catch (e) {
      console.log(e);
    }
  });

示例测试文件:

import _ from 'loadash';

console.log("I'm a file with import and export");

export const = 42;

有什么主意,我如何才能使这些东西正常工作?还是另一种方法?

1 个答案:

答案 0 :(得分:0)

您可以将选项作为transform方法的第二个参数传递。查看示例here