升级到Angular 9后,在typings文件中找不到变量
我有一个对外部日志组件的引用(在js文件中引用),这是我在typings文件中定义的 打字。d.ts升级到Angular 9后,在typings文件中找不到变量,angular,angular9,Angular,Angular9,我有一个对外部日志组件的引用(在js文件中引用),这是我在typings文件中定义的 打字。d.ts declare var LogglyTracker; 我已经将angular应用程序从版本8升级到了版本9,现在当我运行ng build时,我得到了以下错误 src/app/ERROR/loggly.service.ts:13:29中出错-错误TS2304:找不到名称“LogglyTracker” 有人知道解决这个问题的推荐方法是什么吗?这段代码在Angular 8中运行良好 @Injecta
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
}
对我来说,解决方案是将以下内容添加到服务文件的顶部:
/// <reference path="../../typings.d.ts" />
//
引用显然是将类型定义导入代码的另一种方式,更多信息我遇到了与作者完全相同的问题-升级到Angular 9后,我的本地类型定义不再被找到 在Angular 8中,我在
tsconfig.json
"typeRoots": [
"node_modules/@types",
"../src/typings/my-lib/index.d.ts"
"node_modules/@types"
]
升级到Angular 9后,再也找不到我的库了。
我使用Angular 9 CLI生成了一个新应用程序,发现两个文件位于不同的位置:
->src/tsconfig.app.json
tsconfig.app.json
->src/tsconfig.spec.json
tsconfig.spec.json
angular.json
中对这些文件的引用,并更正了tsconfig.app.json
和tsconfig.spec.json
"typeRoots": [
"node_modules/@types",
"../src/typings/my-lib/index.d.ts"
"node_modules/@types"
]
因此,我的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
的typeroot
部分中引用)在从角度7迁移到角度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
]
}
之后:
{
"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"
],
...
}
}
在Angular 9中,添加到文件
tsconfig.app.json
(因为它位于src
文件夹中,所以*.d.ts
位于app
文件夹下):
只需在tsconfig.app.json中添加“typings.d.ts”就可以了,保存文件后别忘了重新服务你的应用程序
"include": [
"src/**/*.d.ts",
"typings.d.ts"
]
角度v.9这应该是不必要的。如果你有很多这样的文件,它是不可维护的。必须有另一个解决办法。这不应该是个问题