升级到Angular 9后,在typings文件中找不到变量

升级到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

我有一个对外部日志组件的引用(在js文件中引用),这是我在typings文件中定义的

打字。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
}

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

/// <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

这应该是不必要的。如果你有很多这样的文件,它是不可维护的。必须有另一个解决办法。这不应该是个问题