javascript - typescript 路径别名在每个文件上都需要模块别名/注册

标签 javascript typescript module-alias

我正在使用 typescript v3.6.4与以下 tsconfig.json片段:


  "compilerOptions": {
    "moduleResolution": "node",
    "baseUrl": "./src",
    "paths": {
      "@config/*": ["config/*"],
      "@config": ["config"],
    }
  }

package.json 中的模块别名:
  "_moduleAliases": {
    "@config": "dist/config"
  }

我有以下文件夹结构:
src
 |-config
     |-index.ts
 |-app
     |index.ts
     |logic.ts
 |-dist

现在在 app/index.ts 中,如果我这样做:
import 'module-alias/register';
import config from '@config';

和我的npm start命令是:
"start": "node -r ts-node/register ./src/app/index.ts",
tsc将编译成功,但 npm start会报错:
Error: Cannot find module '@config' in src/app/logic.ts

解决这个问题的唯一方法是添加
import 'module-alias/register';

src/app/logic.ts
看来我必须添加 import 'module-alias/register'在我做别名的每个文件中?这是一种配置方法吗?

最佳答案

@2021
对我来说,我遇到了完全相同的问题: typescript 只允许我在每个模块都有 import 'module-alias/register'; 时才使用模块别名。当它有这样的模块别名时在它的顶行。
花了将近一整天后,我明白了:
tsc不会帮助编译这些装饰器。因此,您必须确保 js 编译代码的每个使用者都已确认并知道如何使用别名处理这些模块导入。
IE。:

node index.js
=>
node -r module-alias/register index.js

///

mocha .
=>
mocha -r module-alias/register .

关于javascript - typescript 路径别名在每个文件上都需要模块别名/注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634070/

相关文章:

javascript - window.location.href 或 $(location).attr ('href' ) 和波兰语变音符号

angular - 在 Azure Active Directory 上启用 CORS

reactjs - 带有样式组件的 onClick 的 typescript 问题

angular - 如何在 typescript 中定义观察者的类型

javascript - 如何解决 Heroku 上找不到模块的问题?

javascript - 调整 javascript 正则表达式以过滤 url 中的变量

javascript - 如何从 javascript 代码访问 appInsights.context

Javascript定期获取mysql的最后一行