【问题标题】:Node module path alias with experimental modules带有实验模块的节点模块路径别名
【发布时间】: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


    【解决方案1】:

    我将此作为问题发布在 github 上。显然module-alias 还不支持 ES 模块。但是,我得到了一个潜在解决方法的回复。我自己没有尝试过,但海报说它有效。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-06
      • 2020-02-20
      • 1970-01-01
      • 2017-07-04
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      相关资源
      最近更新 更多