【问题标题】:ESLint: "'prop-types' should be listed in the project's dependencies", but "prop-types" is already included with "next" npm package (react/prop-types)ESLint:“'prop-types' 应该列在项目的依赖项中”,但是“prop-types”已经包含在“next”npm 包中(react/prop-types)
【发布时间】:2021-10-15 03:28:54
【问题描述】:

我正在使用 next npm 包,它已经需要 prop-types 库。 prop-types 在我导入时按预期工作。

问题是 ESLint 告诉我“'prop-types' 应该列在项目的依赖项中”。我尝试设置 ESLint 规则:

  "rules": {
    "react/prop-types": "off",
  },

还有

"rules": {
    ...
    "import/no-extraneous-dependencies": [
      "error", {
        "devDependencies": true,
        "optionalDependencies": true,
        "peerDependencies": true,
        "bundledDependencies": true
      }
    ]
}

但是,仍在检测 ESLint 错误。我不想将prop-types 添加到我的package.json,因为它已经包含在next 中。我已经看到这些尝试对 React.js 应用程序有效,但它似乎对我的 Next.js 应用程序有效。有没有人可以更深入地了解我遇到的这个问题?

【问题讨论】:

  • 啊。好的。谢谢@brc-dd!

标签: reactjs next.js eslint react-proptypes


【解决方案1】:

哪个包有哪个依赖并不重要,如果你直接使用一个包,建议它也应该是你的依赖。我不是eslint-plugin-import 的开发者之一,但规则背后的灵感大概是这样的:

  • foo 可能会停止与某个包bar 捆绑在一起,或者foo 可能会更改bar 的版本。但是由于一个包内部使用的包在公开的方法和行为相同之前不会影响语义版本控制,因此您甚至可能无法获得主要版本更新。这意味着您的package.json 中仍然有"foo": "^a.b.c",但bar 将被更新。如果您使用 bar 而不在您的依赖项中明确指定它,您将得到一个可能无法按预期工作或根本无法工作的代码。

现在遇到您的问题,您需要禁用 import/no-extraneous-dependencies 以忽略该(linter)警告/错误。为此,您可以参考以下文档:Disabling Rules with Inline CommentsConfiguring Rules。但是,最简单的方法是继续使用该规则,而忽略它一行:

// eslint-disable-next-line import/no-extraneous-dependencies
import PropTypes from 'prop-types';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2019-11-22
    • 2020-10-30
    • 2017-11-15
    • 2021-07-27
    • 2018-03-16
    • 2017-11-11
    相关资源
    最近更新 更多