Angular语言服务忽略了tsconfig路径,在nx单仓库和vscode中工作,

r6l8ljro  于 3个月前  发布在  Angular
关注(0)|答案(2)|浏览(72)

哪个@angular/*包是bug的来源?

language-service

这是一个回归吗?

描述

我们的项目结构:
/apps/frontend/
/libs/icons/
在我们的根tsconfig中,路径下有以下值:

[
  ...,
  "@rezonapp/icons": ["libs/icons"],
  "@rezonapp/icons/*": ["libs/icons/*"],
]

我们最近从IntelliJ迁移到了VSCode。
在使用IntelliJ时,当我尝试从ui-components中将组件(例如)添加到前端组件(例如)的模板中时,我得到了来自import { IconsComponent } from '@rezonapp/icons/src/lib/icons/icon.component';的自动导入。
在VSCode中,当我尝试做同样的事情(将组件添加到AppComponent的模板字符串中时),我得到了来自import { IconsComponent } from "../../../../libs/icons/src/lib/icons/icon.component";的自动导入。

如果我尝试直接在TS代码中导入IconsComponent(不在模板中),我会得到正确的路径导入建议(来自@rezonapp/icons)

查看语言服务器日志,我没有看到使用tsconfig中的路径的建议:

{
        "title": "Import IconsComponent from '../../../../libs/icons/src/lib/icons/icon.component' on AppComponent",
        "kind": "quickfix",
        "diagnostics": [
            {
                "range": {
                    "start": {
                        "line": 11,
                        "character": 2
                    },
                    "end": {
                        "line": 12,
                        "character": 1
                    }
                },
                "message": "'z-icon' is not a known element:\n1. If 'z-icon' is an Angular component, then verify that it is included in the '@Component.imports' of this component.\n2. If 'z-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@Component.schemas' of this component to suppress this message.",
                "code": -998001,
                "severity": 1,
                "source": "ngtsc"
            },
            {
                "range": {
                    "start": {
                        "line": 11,
                        "character": 2
                    },
                    "end": {
                        "line": 12,
                        "character": 1
                    }
                },
                "message": "Opening tag \"z-icon\" not terminated.",
                "code": -995002,
                "severity": 1,
                "source": "ngtsc"
            }
        ],
...
}

请提供一个最小复现bug的链接

  • 无响应*

请提供您看到的异常或错误

  • 无响应*

请提供您发现此bug的环境(运行ng version)

Angular CLI: 16.2.0
Node: 18.16.1
Package Manager: npm 9.8.1
OS: darwin arm64

Angular: 16.2.0
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1600.2
@angular-devkit/build-angular   16.2.0
@angular-devkit/core            16.2.0
@angular-devkit/schematics      16.2.0
@schematics/angular             16.0.2
rxjs                            7.8.0
typescript                      5.0.4
webpack                         5.76.0
zone.js                         0.13.0

还有其他信息吗?

  • 无响应*
j9per5c4

j9per5c41#

看起来TS配置是正确的,唯一的区别是angular语言服务器和typescript语言服务器。在TS服务器配置中,我将import模块说明选项设置为项目相对路径。这可能是angular语言服务器缺少的内容吗?

dw1jzc5e

dw1jzc5e2#

这是一个已知的限制,在 #47737 中待解决(智能导入跟踪)

相关问题