我使用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模块的节点中启用路径别名吗?
答案 0 :(得分:1)
我将此问题发布在github上。显然module-alias
尚不支持ES模块。但是,我得到了一个可能的解决方法的答复。我自己还没有尝试过,但是海报上说可以用。
https://github.com/ilearnio/module-alias/issues/59#issuecomment-500480450