import/named 正确性
它做什么
验证所有命名导入都属于引用的模块中的命名导出集。
对于 export
,验证所有命名导出都存在于引用的模块中。
注意:对于包,如果存在于 package.json
中,插件将从 jsnext:main
(已弃用)或 module
中找到导出的名称。例如,Redux 的 npm 模块包含此键,因此可以进行 lint。
导入时,不会报告被忽略或明确不是 ES 模块的模块路径。请注意,Flow 使用的类型导入和导出始终被忽略。
为什么这不好?
导入或导出不存在于引用的模块中的名称可能会导致运行时错误和混淆。它可能表明某些功能可用,但实际并非如此,从而使代码更难维护和理解。此规则有助于确保代码准确反映可用的导出,提高可靠性。
示例
给出
js
// ./foo.js
export const foo = "I'm so foo";
此规则不正确代码的示例
js
// ./baz.js
import { notFoo } from "./foo";
// ES7 proposal
export { notFoo as defNotBar } from "./foo";
// will follow 'jsnext:main', if available
import { dontCreateStore } from "redux";
此规则正确代码的示例
js
// ./bar.js
import { foo } from "./foo";
// ES7 proposal
export { foo as bar } from "./foo";
// node_modules without jsnext:main are not analyzed by default
// (import/ignore setting)
import { SomeNonsenseThatDoesntExist } from "react";