tslint 错误 - 阴影名称:'err'

Posted

技术标签:

【中文标题】tslint 错误 - 阴影名称:\'err\'【英文标题】:tslint Error - Shadowed name: 'err'tslint 错误 - 阴影名称:'err' 【发布时间】:2018-11-06 19:03:31 【问题描述】:

tslint 当前抛出以下错误

Shadowed name: 'err'

这里是代码

fs.readdir(fileUrl, (err, files) => 
        fs.readFile(path.join(fileUrl, files[0]), function (err, data) 
            if (!err) 
                res.send(data);
            
        );
    );

任何人都知道解决此问题的最佳方法是什么以及错误甚至意味着什么?

【问题讨论】:

这意味着你已经隐藏了err这个名字;您在两个嵌套回调中为错误使用相同的名称,因此在内部回调主体中无法访问外部错误。至于如何解决:为其中一个使用不同的名称。 【参考方案1】:

您在外部和内部回调中使用了相同的变量“err”,这被 tslint 阻止了。

如果你想使用相同的变量,那么 "no-shadowed-variable": false,否则如下。

fs.readdir(fileUrl, (readDirError, files) => 
    fs.readFile(path.join(fileUrl, files[0]), function (err, data) 
            if (!err) 
                res.send(data);
            
        );
    );

【讨论】:

在这种情况下,'err' 值是什么?该变量在哪里定义?【参考方案2】:

在错误行上方添加此注释--

// tslint:disable-next-line:no-shadowed-variable

【讨论】:

【参考方案3】:

这个隐藏的名称 tslint 错误是由于在您的回调函数中重复了两次名称“err”。您可以将任何“错误”的人更改为其他名称,这样应该可以工作。

示例:这应该可以工作

fs.readdir(fileUrl, (error, files) => 
        fs.readFile(path.join(fileUrl, files[0]), function (err, data) 
            if (!err) 
                res.send(data);
            
        );
    );

【讨论】:

【参考方案4】:

当同一变量在同一作用域内多次声明时,会出现此警告。

在这种情况下使用不同的变量名。

【讨论】:

【参考方案5】:

此行将禁用您的错误,

// tslint:disable: no-shadowed-variable

但是不能有两个 err 变量,您也可以将第二个 err 变量名称更改为不同的名称

fs.readdir(fileUrl, (err, files) => 
  fs.readFile(path.join(fileUrl, files[0]), function (readFileErr, data)         
    if (!readFileErr) 
            res.send(data);
        
    );
);

我遇到了这样的错误interfaces.ts:119:26 - Shadowed name: 'POST'

// tslint:disable: no-shadowed-variable
interface API 
   export namespace APINAME 
     export type POST 

     
   
   export namespace OTHERAPINAME 
     export type POST 

     
   

我已经用这一行 // tslint:disable: no-shadowed-variable 禁用了这个错误案例,因为有时打字稿编译器无法正确理解你的代码:)

【讨论】:

以上是关于tslint 错误 - 阴影名称:'err'的主要内容,如果未能解决你的问题,请参考以下文章

理解“无阴影变量”的 tslint 警告

在外部范围中定义的阴影名称有啥问题?

在 C++ 中,阴影变量名称的范围解析(“优先顺序”)是啥?

Exception in thread “main“ redis.clients.jedis.exceptions.JedisDataException: ERR no such key

导航栏中标题的默认字体大小、字体名称和阴影是多少?

mongodb本机驱动程序获取没有数据库名称的集合名称