【问题标题】:Short Imports with TypeScript Path Mapping in tsconfigtsconfig 中使用 TypeScript 路径映射的短导入
【发布时间】:2020-12-02 12:21:45
【问题描述】:

我正在尝试为我的 Angular 模块创建简短的导入。

以下是我在 tsconfig.base.json 文件中修改的内容。

{
  "compileOnSave": false,
  "compilerOptions": {
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "baseUrl": "",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom",
      "esnext"
    ],
    "module": "esnext",
    "paths": {
      "@asfc/shared": ["projects/asfc-shared/src"],
      "@asfc/shared/*": ["projects/asfc-shared/*"],
      "@asfc/shared/global": ["projects/asfc-shared/src/lib/global"],
      "@asfc/shared/global/*": ["projects/asfc-shared/src/lib/global/*"],
      "@asfc/shared/tagging": ["projects/asfc-shared/src/lib/tagging"],
      "@asfc/shared/tagging/*": ["projects/asfc-shared/src/lib/tagging/*"],
      "@asfc/shared/testing": ["projects/asfc-shared/src/lib/testing"]
    },
  "exclude": [
    "tools"
  ]
}

模块路径:projects/asfc-shared/src/public_api.ts

export * from './lib/global/index';
export * from './lib/tagging/index';
export * from './lib/testing/index';
export * from './lib/shared/index';

如果我导入,则在我的组件中,SharedGlobalService

import { SharedGlobalService } from '@asfc/shared';

我收到以下错误。

ERROR: projects/ubc-security-profile/src/lib/apollo.config.ts:5:37 - error TS2307: Cannot find module '@asfc/shared' or its corresponding type declarations.

我在这里做错了什么?请帮忙。

更新:文件夹结构

更新

更新 baseUrl 后,出现以下错误

Compiling TypeScript sources through ngc
ERROR: Unable to write a reference to SvgCaptchaComponent in /Users/a1410978/Desktop/ssr-workspace/asfc-shell/projects/asfc-shared/src/lib/shared/svg-captcha/svg-captcha.component.ts from /Users/a1410978/Desktop/ssr-workspace/asfc-shell/projects/asfc-shared/src/lib/shared/svg-captcha/svg-captcha.module.ts
An unhandled exception occurred: Unable to write a reference to SvgCaptchaComponent in /Users/a1410978/Desktop/ssr-workspace/asfc-shell/projects/asfc-shared/src/lib/shared/svg-captcha/svg-captcha.component.ts from /Users/a1410978/Desktop/ssr-workspace/asfc-shell/projects/asfc-shared/src/lib/shared/svg-captcha/svg-captcha.module.ts
See "/private/var/folders/33/jgk04z2d26nbtr965nyz88fw0000gp/T/ng-yirb2X/angular-errors.log" for further details.

【问题讨论】:

    标签: angular typescript tsconfig tsconfig-paths


    【解决方案1】:

    路径与baseUrl 值相关。

    示例...如果您的 tsconfig.json 位于项目根目录中,而您的 Angular 应用程序代码位于 src 中,同样位于根目录中,您可以将 baseUrl 指定为 src

    从那里,路径开始于src

    假设您有一个src -> lib 目录并想为其创建路径:

    "paths": {
      "@app/lib/*": ["app/lib/*"]
    }
    

    然后您可以将导入引用为:

    import { yourExport } from '@app/lib/wherever';
    

    希望对你有所帮助。

    【讨论】:

    • 我已经更新了我的文件夹结构,我已经将我的 baseUrl 设置为./
    • 如果您将baseUrl 设置为./,则根据您的示例代码,您的路径看起来是正确的。我注意到有时 Visual Studio Code(如果您使用的是该代码)接收这些更改可能会非常缓慢,有时我必须关闭它并重新启动它才能获取注册路径。
    • 有没有办法在库中指定快捷方式,而不是客户端?强制每个客户端设置快捷方式似乎有点没用。
    猜你喜欢
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2020-11-18
    • 2022-11-29
    相关资源
    最近更新 更多