升级到 Angular 9 后无法在类型文件中找到变量
After upgrade to Angular 9 cannot find variable in typings file
我有一个外部日志记录组件的引用(在 js 文件中引用),我在类型文件中定义了它
typings.d.ts
declare var LogglyTracker;
我已将我的 angular 应用程序从版本 8 升级到版本 9,现在当我 运行 ng build 时,出现以下错误
ERROR in src/app/error/loggly.service.ts:13:29 - error TS2304: Cannot find name 'LogglyTracker'.
有谁知道解决此问题的推荐方法是什么?此代码在 Angular 8.
中运行良好
@Injectable()
export class LogglyLoggerService {
// https://github.com/loggly/loggly-jslogger
private loggly: any = new LogglyTracker(); //!! Error here
}
我的解决方案是将以下内容添加到服务文件的顶部:
/// <reference path="../../typings.d.ts" />
reference 显然是另一种将类型定义导入代码的方法,更多信息 here
我遇到了与作者完全相同的问题 - 升级到 Angular 9 后,不再找到我的本地类型定义。
在Angular8中,我在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.json
和 tsconfig.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"
]
}
请注意,src
目录下的所有 d.ts
文件将被自动拉入(不需要在 tsconfig.json
的 typeRoots
部分中引用)
从 Angular 7 迁移到 Angular 9.[=15= 后出现同样的问题]
我个人只需要在 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"
],
...
}
}
在Angular9中添加到文件tsconfig.app.json
(因为它驻留在src
文件夹中,所以*.d.ts
在app
文件夹下):
"include": [
"app/**/*.d.ts"
]
只需在 tsconfig.app.json
中添加 typings.d.ts
对我有用,不要忘记在保存文件后重新提供您的应用程序。
"include": [
"src/**/*.d.ts",
"typings.d.ts"
]
Angular v.9
我有一个外部日志记录组件的引用(在 js 文件中引用),我在类型文件中定义了它
typings.d.ts
declare var LogglyTracker;
我已将我的 angular 应用程序从版本 8 升级到版本 9,现在当我 运行 ng build 时,出现以下错误
ERROR in src/app/error/loggly.service.ts:13:29 - error TS2304: Cannot find name 'LogglyTracker'.
有谁知道解决此问题的推荐方法是什么?此代码在 Angular 8.
中运行良好@Injectable()
export class LogglyLoggerService {
// https://github.com/loggly/loggly-jslogger
private loggly: any = new LogglyTracker(); //!! Error here
}
我的解决方案是将以下内容添加到服务文件的顶部:
/// <reference path="../../typings.d.ts" />
reference 显然是另一种将类型定义导入代码的方法,更多信息 here
我遇到了与作者完全相同的问题 - 升级到 Angular 9 后,不再找到我的本地类型定义。
在Angular8中,我在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.json
和 tsconfig.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"
]
}
请注意,src
目录下的所有 d.ts
文件将被自动拉入(不需要在 tsconfig.json
的 typeRoots
部分中引用)
从 Angular 7 迁移到 Angular 9.[=15= 后出现同样的问题]
我个人只需要在 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"
],
...
}
}
在Angular9中添加到文件tsconfig.app.json
(因为它驻留在src
文件夹中,所以*.d.ts
在app
文件夹下):
"include": [
"app/**/*.d.ts"
]
只需在 tsconfig.app.json
中添加 typings.d.ts
对我有用,不要忘记在保存文件后重新提供您的应用程序。
"include": [
"src/**/*.d.ts",
"typings.d.ts"
]
Angular v.9