【问题标题】: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这个名字;您在两个嵌套回调中为错误使用相同的名称,因此在内部回调主体中无法访问外部错误。至于如何解决:为其中一个使用不同的名称。

标签: node.js angular typescript lint tslint


【解决方案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 禁用了这个错误案例,因为有时打字稿编译器无法正确理解你的代码:)

        【讨论】:

          猜你喜欢
          • 2018-03-29
          • 2019-01-18
          • 2019-08-13
          • 2019-01-15
          • 1970-01-01
          • 1970-01-01
          • 2013-06-11
          • 1970-01-01
          • 2017-12-04
          相关资源
          最近更新 更多