我正在使用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:意外的令牌导入
如果我在开始构建之前更改别名,从app
到app_dist
,它可以正常工作,但问题是,如何映射这些别名(或如何使用不同的_moduleAliases
配置)以便应用程序在开发和生产时正确解析路径?
也许还有另一种方法可以使用这种堆栈对模块进行别名?提前谢谢。
答案 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, '../../'));
将导致相对于当前工作目录的路径解析,解决所描述的问题。