Angular 18迁移项目中ESLint报'Location'已作为内置全局变量定义的错误求助
Angular 18迁移项目中ESLint报'Location'已作为内置全局变量定义的错误求助
嘿,我刚好处理过类似的Angular迁移问题,这个报错其实很好解决!核心原因就是浏览器本身自带了一个全局的Location对象,和你从@angular/common里导入的Location重名了,而你开启的@typescript-eslint/no-redeclare规则刚好会检查这种重声明的情况,所以就触发了错误。
给你几个实用的解决办法,你可以按需选:
方案一:给导入的模块重命名(最推荐)
直接在导入的时候给Angular的Location起个别名,彻底避免冲突,代码改成这样:import { Location as AngularLocation } from '@angular/common';之后代码里统一用
AngularLocation来调用这个服务就行,简单直接还不影响规则的其他检查。方案二:修改ESLint规则配置
如果你不想改动业务代码,可以调整@typescript-eslint/no-redeclare的规则参数,让它忽略和全局变量的冲突。在你的ESLint flat config的rules里改成这样:rules: { // ... 其他保留的规则 '@typescript-eslint/no-redeclare': ['error', { ignoreGlobals: true }] }这个
ignoreGlobals选项就是告诉ESLint,别把和全局变量重名的导入判定为重复声明,这样既能保留规则对其他代码的检查,又能解决这个特定报错。方案三:临时关闭该规则(不推荐)
如果你实在赶时间,也可以把@typescript-eslint/no-redeclare暂时设为warn或者off,不过这样会关掉所有重复声明的检查,可能漏掉其他真正的代码问题,所以除非万不得已,别这么干。
备注:内容来源于stack exchange,提问作者AsGoodAsItGets
相关产品推荐
相关产品推荐

