【发布时间】:2019-10-07 09:40:58
【问题描述】:
我使用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
这些方法都不起作用。我猜 module-alias 会覆盖 require 函数以允许路径别名,这当然不适用于 esm。
我知道我可以使用 Babel 做到这一点,但我使用 --experimental-modules 来避免这种情况。
我还尝试了node_modules 文件夹中的符号链接,但它似乎无法在 Docker 容器中运行应用程序。此外,我觉得它很老套/脆弱。
有人知道如何在带有原生 ES 模块的节点中启用路径别名吗?
【问题讨论】:
标签: node.js node-modules es6-modules