Node.js Babel构build和npm模块别名

我使用模块别名为我的Node.js + Express.js项目,运行与Babel ES2015支持。

当使用babel-node开始时,应用程序是完美的,但是,如果我先用babel (来自package.json )构build它:

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

然后开始:

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

它显然找不到使用模块别名指定的正确path。 Node.js不是查看app_dist ,而是在appsearch导入,find它不理解并引发的ES2015 import指令:

SyntaxError:意外的标记导入

如果我在构build开始之前更改别名,从appapp_dist ,它的工作原理,但问题是,如何映射这些别名(或如何使用不同的_moduleAliasesconfiguration),以便应用程序在开发和生产上正确parsingpath?

也许有另一种方式来与这样的堆栈模块别名? 提前致谢。

find解决这个问题的方法。

为了设置模块别名的相对path别名,它们不是在package.json定义的,而是在根目录中的JavaScript文件中定义的,它将被Babel转换。

在我的情况下,像这样在config目录中创build一个aliases.js脚本:

 import path from 'path'; import moduleAlias from 'module-alias'; moduleAlias.addAlias('@root', path.resolve(__dirname, '../../')); 

将导致path相对于当前工作目录解决,解决了所描述的问题。