Node.js Babel 构建和 npm 模块别名
Node.js Babel build and npm module-alias
我正在为我的 Node.js + Express.js 项目使用 module-alias,运行 它与 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: Unexpected token import
如果我在构建开始之前更改别名,从 app
到 app_dist
,它会起作用,但问题是如何映射这些别名(或如何使用不同的 _moduleAliases
配置)以便应用程序在开发和生产中正确解析路径?
也许还有另一种方法可以用这种堆栈为模块起别名?提前致谢。
已找到此问题的解决方案。
为了使用 module-alias 设置相对路径别名,它们不应在 package.json
中定义,而应在将使用 Babel 转译的根目录中的 JavaScript 文件中定义.
在我的例子中,在 config
目录中创建一个 aliases.js
脚本,如下所示:
import path from 'path';
import moduleAlias from 'module-alias';
moduleAlias.addAlias('@root', path.resolve(__dirname, '../../'));
将导致相对于当前工作目录的路径解析,解决所描述的问题。
我正在为我的 Node.js + Express.js 项目使用 module-alias,运行 它与 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: Unexpected token import
如果我在构建开始之前更改别名,从 app
到 app_dist
,它会起作用,但问题是如何映射这些别名(或如何使用不同的 _moduleAliases
配置)以便应用程序在开发和生产中正确解析路径?
也许还有另一种方法可以用这种堆栈为模块起别名?提前致谢。
已找到此问题的解决方案。
为了使用 module-alias 设置相对路径别名,它们不应在 package.json
中定义,而应在将使用 Babel 转译的根目录中的 JavaScript 文件中定义.
在我的例子中,在 config
目录中创建一个 aliases.js
脚本,如下所示:
import path from 'path';
import moduleAlias from 'module-alias';
moduleAlias.addAlias('@root', path.resolve(__dirname, '../../'));
将导致相对于当前工作目录的路径解析,解决所描述的问题。