2017-04-05 75 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, '../../')); 

会导致路径相对解决当前工作目录,解决上述问题。