【问题标题】:why the module-alias did not replace the alias path to original path为什么模块别名没有将别名路径替换为原始路径
【发布时间】:2022-10-25 23:45:32
【问题描述】:

我想使用module-alias 转换打字稿项目中的别名路径。首先我安装模块别名:

yarn add module-alias

package.json 中添加配置,如下所示:

"_moduleAliases": {
    "@": "."
}

但是当我使用 @ 导入模块时,显示如下错误:

Cannot find module '@/auth/extension/AuthHandler'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?ts(2792)

AuthHandler 路径是src/auth/extension/AuthHandler,为什么找不到模块?我应该怎么做才能让它工作?

【问题讨论】:

  • 嗨@Dolphin,自从您发布以来,这有什么好运吗?我也在为此苦苦挣扎。 TS 路径有效,但 JS 路径无效。干杯
  • 我解决了这个问题,但我不记得如何解决它,我已经尝试阅读代码但仍然没有弄清楚,它太远了。对不起。 @Stf_F

标签: typescript


【解决方案1】:

TLDR

在 index.ts/starter 文件中

import moduleAlias from "module-alias";
moduleAlias.addAlias("@fn", __dirname);

没多久,想看

在与这个斗争了很长一段时间后,我最终从 package.json 中删除了 _moduleAlias 条目,而是在 index.ts 中注册了别名,如下所示:

moduleAlias.addAliases({
  "@fn/*": `${__dirname}/lib/src`,
});

然而,这也没有立即奏效。这个 sn-p 有两个问题:

  • 第一个问题是贪婪的操作符,它歪曲了别名应该生效的模块的实际别名和路径,例如,而不是输出: /path/to/module/@aliased_folder/sub,贪心算子的使用导致了这个路径: @aliased_folder/sub
  • 在我的情况下,使用 __dirname 和输出文件夹 lib/src 在路径中创建了重复项,例如:/path/to/module/lib/src/lib/src/aliased

因此,我最终得到了以下工作版本:

import moduleAlias from "module-alias";
moduleAlias.addAlias("@fn", __dirname);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 2020-10-27
    • 2016-06-21
    • 2019-10-07
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多