实验模块的节点模块路径别名

时间:2019-05-21 03:39:19

标签: node.js node-modules es6-modules

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

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

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

require('module-alias/register')

我尝试将其更改为:

import 'module-alias/register'

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

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

这些方法都不起作用。我猜想模块别名会覆盖require函数,以允许使用路径别名,而这当然在esm中不起作用。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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