13

我有一个外部日志记录组件的引用(在 js 文件中引用),我在类型文件中定义了它

打字.d.ts

declare var LogglyTracker;

我已将我的 Angular 应用程序从版本 8 升级到 9,现在当我运行ng build时,出现以下错误

src/app/error/loggly.service.ts:13:29 中的错误 - 错误 TS2304:找不到名称“LogglyTracker”。

有谁知道解决此问题的推荐方法是什么?此代码在 Angular 8 中运行良好。

@Injectable()
export class LogglyLoggerService {

// https://github.com/loggly/loggly-jslogger
private loggly: any = new LogglyTracker(); //!! Error here
}
4

5 回答 5

14

从Angular 7迁移到Angular 9后遇到了同样的问题。

我个人只需要在tsconfig.app.json.

之前

{
    "extends": "../tsconfig.json",
    "compilerOptions": {
        "outDir": "../out-tsc/app",
        "types": [
            "node"
        ]
    },
    "files": [
        "main.ts",
        "polyfills.ts"
    ],
    "include": [
        "src/**/*.d.ts"
    ]
}

之后

{
    "extends": "../tsconfig.json",
    "compilerOptions": {
        "outDir": "../out-tsc/app",
        "types": [
            "node"
        ]
    },
    "files": [
        "main.ts",
        "polyfills.ts"
    ],
    "include": [
        "src/**/*.d.ts",
        "typings.d.ts" // add this line
    ]
}

我假设您在迁移到 Angular 9 之前已经进行了更改tsconfig.json。如果没有,这里是:

{
    ...
    "compilerOptions": {
        ...
        "typeRoots": [
            "node_modules/@types",
            "src/typings.d.ts"
        ],
        ...
    }
}
于 2020-04-11T13:15:10.667 回答
4

我和作者遇到了完全相同的问题——升级到 Angular 9 后,我的本地类型定义不再被发现。

在 Angular 8 中,我在tsconfig.json

"typeRoots": [
    "node_modules/@types",
    "../src/typings/my-lib/index.d.ts"
    "node_modules/@types"
  ]

升级到 Angular 9 后,my-lib再也找不到了。我使用 Angular 9 CLI 生成了一个新应用程序,发现 2 个文件位于不同的位置:

  • src/tsconfig.app.json->tsconfig.app.json
  • src/tsconfig.spec.json->tsconfig.spec.json

我在迁移的项目中进行了类似的更改,更新了对这些文件的引用angular.json,并更正了指向其他文件的指针tsconfig.app.jsontsconfig.spec.json

结果,我的tsconfig.app.json样子:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": ["jest"]
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

请注意,目录d.ts下的所有文件src将被自动拉入(不需要参考typeRoots部分tsconfig.json

于 2020-02-21T09:51:07.083 回答
0

对我来说,解决方案是将以下内容添加到服务文件的顶部:

/// <reference path="../../typings.d.ts" />

参考显然是将类型定义导入代码的另一种方式,更多信息在这里

于 2020-01-23T09:03:44.727 回答
0

在 Angular 9 添加到文件tsconfig.app.json(因为它驻留在src文件夹中,所以*.d.tsapp文件夹下):

  "include": [
      "app/**/*.d.ts"
  ]
于 2020-07-09T17:38:55.170 回答
0

只需typings.d.ts在里面添加tsconfig.app.json对我有用,不要忘记在保存文件后重新提供您的应用程序。

"include": [
"src/**/*.d.ts",
"typings.d.ts"
]

角度 v.9

于 2021-06-19T15:20:16.763 回答