diff --git a/CHANGELOG.md b/CHANGELOG.md index fac8b782c..8632f2386 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel - [`no-unused-modules`]: fix usage of `import/extensions` settings ([#1560], thanks [@stekycz]) - [`import/extensions`]: ignore non-main modules ([#1563], thanks [@saschanaz]) - TypeScript config: lookup for external modules in @types folder ([#1526], thanks [@joaovieira]) +- [`no-extraneous-dependencies`]: ensure `node.source` is truthy ([#1589], thanks [@ljharb]) ## [2.19.1] - 2019-12-08 ### Fixed @@ -628,6 +629,7 @@ for info on changes for earlier releases. [`memo-parser`]: ./memo-parser/README.md +[#1589]: https://github.com/benmosher/eslint-plugin-import/issues/1589 [#1586]: https://github.com/benmosher/eslint-plugin-import/pull/1586 [#1563]: https://github.com/benmosher/eslint-plugin-import/pull/1563 [#1560]: https://github.com/benmosher/eslint-plugin-import/pull/1560 diff --git a/src/rules/no-extraneous-dependencies.js b/src/rules/no-extraneous-dependencies.js index 41ccb2a31..7746f489e 100644 --- a/src/rules/no-extraneous-dependencies.js +++ b/src/rules/no-extraneous-dependencies.js @@ -203,7 +203,9 @@ module.exports = { // todo: use module visitor from module-utils core return { ImportDeclaration: function (node) { - reportIfMissing(context, deps, depsOptions, node, node.source.value) + if (node.source) { + reportIfMissing(context, deps, depsOptions, node, node.source.value) + } }, ExportNamedDeclaration: function (node) { if (node.source) { @@ -211,7 +213,9 @@ module.exports = { } }, ExportAllDeclaration: function (node) { - reportIfMissing(context, deps, depsOptions, node, node.source.value) + if (node.source) { + reportIfMissing(context, deps, depsOptions, node, node.source.value) + } }, CallExpression: function handleRequires(node) { if (isStaticRequire(node)) { diff --git a/tests/src/rules/no-extraneous-dependencies.js b/tests/src/rules/no-extraneous-dependencies.js index f3f744805..114a733af 100644 --- a/tests/src/rules/no-extraneous-dependencies.js +++ b/tests/src/rules/no-extraneous-dependencies.js @@ -125,6 +125,9 @@ ruleTester.run('no-extraneous-dependencies', rule, { test({ code: 'export { foo } from "lodash.cond"' }), test({ code: 'export * from "lodash.cond"' }), test({ code: 'export function getToken() {}' }), + test({ code: 'export class Component extends React.Component {}' }), + test({ code: 'export function Component() {}' }), + test({ code: 'export const Component = () => {}' }), ], invalid: [ test({