Node.js Babel build和npm module-alias

时间:2017-04-05 17:17:56

标签: javascript node.js express alias babeljs

我正在使用module-alias作为我的Node.js + Express.js项目,使用Babel运行它以获得ES2015支持。

使用babel-node启动时,应用效果很好,但是,如果我首先使用babel(来自package.json)构建它:

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

然后开始:

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

显然无法找到使用module-alias指定的正确路径。 Node.js在app_dist中搜索导入,而不是查看app,找到它不理解的ES2015 import指令并抛出:

  

SyntaxError:意外的令牌导入

如果我在开始构建之前更改别名,从appapp_dist,它可以正常工作,但问题是,如何映射这些别名(或如何使用不同的_moduleAliases配置)以便应用程序在开发和生产时正确解析路径?

也许还有另一种方法可以使用这种堆栈对模块进行别名?提前谢谢。

1 个答案:

答案 0 :(得分:1)

找到解决此问题的方法。

为了设置module-alias的相对路径别名,它们不应在package.json中定义,而应在根目录中的JavaScript文件中定义,该文件将使用Babel进行转换。

就我而言,在aliases.js目录中创建一个config脚本,如下所示:

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

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

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