我使用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模块的节点中启用路径别名?
发布于 2019-06-11 03:55:15
我把这个作为一个问题发布在github上。显然,module-alias还不支持ES模块。然而,我得到了一个潜在的解决方法的回复。我自己还没有试过,但海报上说它很管用。
https://github.com/ilearnio/module-alias/issues/59#issuecomment-500480450
https://stackoverflow.com/questions/56230755
复制相似问题