如何让Babel需要Babel编译的文件?

时间:2016-09-29 23:51:21

标签: babeljs

如果我有两个文件,请让他们称之为A.js和B.js:

/src/A.js
/src/B/B.js

A.js通过ES6模块语法使用B.js:

import B from './B/B.js';

和B.js导入其他东西,例如:

import http from 'http';

我使用Babel将模块语法转换为require(CommonJS)语法,我可以通过以下方式成功运行它:

node_modules/babel-cli/bin/babel.js src > compiled.js

但是,有一个问题:当我尝试运行生成的compiled.js时,我得到了:

/src/b/B.js:1
(function (exports, require, module, __filename, __dirname) { import http from 'http';

SyntaxError: Unexpected token import

来自compiled.js的堆栈跟踪部分指向此行:

var _B = require('./src/b/B')

虽然导致问题的实际导入来自B.js:

import http from 'http';

似乎原来的B.js是必需的,因为在compile.js中的B.js代码的副本没有import,但我不是&# 39;理解为什么没有使用该版本。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您不需要重命名任何导入。编译整个源文​​件夹,而不是编译单个文件。这将保留相对进口。

如果你有

src/
  A.js
  B.js

并运行babel src --out-dir lib,您将获得

lib/
  A.js
  B.js
src/
  A.js
  B.js

lib/文件夹包含已编译的文件。现在,您可以通过node lib/A.js执行已编译的代码,它应该按预期工作。