关于node.js:带有实验模块的节点模块路径别名

Node module path alias with experimental modules

我使用module-alias包在节点项目中启用路径别名。例如。它让您:

1
const accountRepo = require('@app/account/account-repo')

我想将项目转换为使用实验性模块(通过--experimental-modules标志启用)。当节点12进入LTS时,将启用ES模块而没有标志。以为我会在那之前开始尝试。无论如何,模块别名似乎不适用于ES模块。我尝试将其添加到我的应用程序的根目录(这是过渡到esm之前使用的方法):

1
require('module-alias/register')

我尝试将其更改为:

1
import 'module-alias/register'

我在启动服务器时尝试要求:

1
node --experimental-modules -r module-alias/register server/app.js

这些方法均无效。我猜想模块别名会覆盖require函数,以允许使用路径别名,而这当然不适用于esm。

我知道我可以使用Babel做到这一点,但是我正在使用--experimental-modules来避免这种情况。

我还在node_modules文件夹中尝试了一个符号链接,但是在Docker容器中运行该应用程序似乎不起作用。另外,对我来说,它似乎很脆弱。

有谁知道如何在具有本机ES模块的节点中启用路径别名?


我将其作为问题发布在github上。 显然module-alias尚不支持ES模块。 但是,我得到了一个可能的解决方法的答复。 我自己还没有尝试过,但是张贴者说可以。

https://github.com/ilearnio/module-alias/issues/59#issuecomment-500480450