如果我有两个文件,请让他们称之为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;理解为什么没有使用该版本。
任何帮助都将不胜感激。
答案 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
执行已编译的代码,它应该按预期工作。