Node.js Babel build and npm 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"

它显然找不到用模块别名指定的正确路径。Node.js没有研究app_dist而是在app中搜索导入,找到它不理解的ES2015 import指令并抛出:

语法错误:意外的令牌导入

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

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

找到了此问题的解决方案。

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

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

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

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

最新更新