2016-09-29 39 views
0

如果我有兩個文件,我們姑且稱之爲A.js和B.js:如何讓Babel需要Babel編譯的文件?

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

和B.js進口:

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

A.js通過ES6模塊語法使用B.js其他的東西,如:

import http from 'http'; 

我使用通天模塊語法轉換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是必需的,因爲在compiled.js中的B.js代碼的副本沒有import,但我不明白爲什麼該版本沒有被使用。

任何幫助,將不勝感激。

+0

您通常會轉換整個目錄,以便文件之間的相對路徑繼續有效。爲什麼要單獨編譯文件並重命名它們? –

+0

因爲我是一個習慣於Webpack的虛擬人,並且以前從未手動編譯過Babel。我會嘗試在我的目錄上運行它,謝謝! – machineghost

+0

這沒有奏效。它將A.js中的'import'轉換爲'require',但將B.js作爲單獨的文件(帶有導入)。我曾希望它會把A.js和B.js都編譯成compiled.js,但沒有這樣的運氣。 – machineghost

回答

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執行編譯代碼,它應該按預期工作。

相關問題