2017-04-05 59 views
1

我爲我的Node.js + Express.js項目使用module-alias,使用Babel爲ES2015支持運行它。Node.js Babel構建和npm模塊別名

應用程序完美的作品時babel-node開始,但是,如果我先用babel構建它(從package.json):

"build": "babel ./app --out-dir ./app_dist" 

,然後開始:

"start": "node ./app_dist/bin/www" 

它顯然無法找到正確的使用模塊別名指定的路徑。而不是尋找到app_dist,Node.js的搜索在app進口,認定ES2015 import指令,它不理解,並拋出:

SyntaxError: Unexpected token import

如果我改變的別名,來構建開始前,從appapp_dist,它工作,但問題是,如何映射這些別名(或如何使用不同的_moduleAliases配置),以便應用程序在開發和生產中正確解析路徑?

也許有另一種方法來與這樣的堆棧模塊別名?提前致謝。

回答

1

找到了解決此問題的解決方案。

爲了設置相對路徑別名爲module-alias,它們不在package.json中定義,而是在根目錄中的JavaScript文件中,它將與Babel一起被轉發。

在我的情況下,創建內部config目錄的aliases.js這樣的腳本:

import path from 'path'; 
import moduleAlias from 'module-alias'; 

moduleAlias.addAlias('@root', path.resolve(__dirname, '../../')); 

會導致路徑相對解決當前工作目錄,解決上述問題。

相關問題