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'的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中,阴影变量名称的范围解析(“优先顺序”)是啥?
Exception in thread “main“ redis.clients.jedis.exceptions.JedisDataException: ERR no such key