• eslint与prettier


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 愿为人间第一流 2024-04-15 15:46 采纳率: 0% 浏览 9 首页/ 前端 / eslint与prettier 前端 eslint与prettier冲突问题 在package.json中保存运行无报错,但在其他vue页面运行会报错 ERROR Failed to compile with 1 error 15:45:25 [eslint] prettier.resolveConfig.sync is not a function Occurred while linting C:\dp\vue-cs\src\App.vue:1 You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. ERROR in [eslint] prettier.resolveConfig.sync is not a function Occurred while linting C:\dp\vue-cs\src\App.vue:1 webpack compiled with 1 error 这是什么原因? 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    5条回答 默认 最新

    • 码农阿豪 Java领域优质创作者 2024-04-15 15:46
      关注
      让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
      这个错误是由于使用了eslint和prettier两个工具时,它们的规则产生了冲突导致的。具体来说,eslint是一个静态代码检查工具,可以对代码进行检查并指出潜在的问题,而prettier是一个代码格式化工具,可以自动格式化代码以符合一定的规范。在使用时,如果两个工具的规则有所重叠,就有可能产生冲突。 解决这个问题的方法有多种,其中一种是在项目中的.eslintrc.js文件中添加如下代码:
      module.exports = {
        // ...
        extends: ["plugin:prettier/recommended"],
        rules: {
          // ...
          "prettier/prettier": ["error", {}, { usePrettierrc: true }],
        },
      };
      

      这样,就可以通过eslint来调用prettier进行代码格式化,避免了两个工具之间的冲突。 另外,如果在使用vue-loader时出现这个问题,还可以在webpack配置文件中添加如下代码:

      module.exports = {
        // ...
        module: {
          // ...
          rules: [
            {
              test: /\.vue$/,
              loader: "vue-loader",
              options: {
                // ...
                // 添加这个选项,将eslint和prettier集成起来
                eslintConfig: {
                  extends: ["plugin:prettier/recommended"],
                  rules: {
                    "prettier/prettier": ["error", {}, { usePrettierrc: true }],
                  },
                },
              },
              // ...
            },
            // ...
          ],
        },
        // ...
      };
      

      这样配置之后,就能够在vue组件中使用prettier来格式化代码,同时保留eslint的静态代码检查功能。 以上是两种解决eslint与prettier冲突问题的方法,根据具体的项目和工具配置情况,可能会有所不同。最终解决问题的关键是要理解两个工具之间的规则冲突,并寻找合适的方法解决。

      展开全部

      评论
    • 疋疋 2024-04-16 08:42
      关注

      大概率项目是vue3的吧,我自己都针对vue3重构prettier和eslint针对vue格式化的规则了...

      评论
      愿为人间第一流 2024-04-16 10:51

      是的,vue3项目。在设置文件运行就没有报错,正常vue页面就报错

      回复
      疋疋 回复 愿为人间第一流 2024-04-16 18:54

      我有操作解决方案,不过不好怎么跟你描述解释。我没有使用自带的eslint 的配置内容,我用的是我自己写的eslint。另外格式化方面,我也是通过eslint来格式化并检测vue文件。其余文件还是用prettier来格式化文件eslint检测的。
      你可以试试我的这配置的规则eslint-config-some21这个。不要用prettier格式化文件,记得排除vue。
      eslint上配置 extends:"some21/typescript/vue" 这么一个就好。剩下的rule你自己看着调整吧,毕竟这个是适用于我自己风格的配置。

       {
          "root": true,
          "extends": [
            "some21/typescript/vue"
          ],
          "globals": {
            "RequestInit": "readonly"
          },
          "parserOptions": {
            "ecmaVersion": "latest"
          }
        }
      
      

      回复
      疋疋 回复 愿为人间第一流 2024-04-16 18:55

      npmjs 里面可以找到eslint-config-some21额外需要安装的依赖说明

      1
      回复
      展开全部4条评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-16 10:52
      关注

      上午好☀️☀️☀️️
      本答案参考ChatGPT-3.5

      该报错提示pretter.resolveConfig.sync不是一个函数,可能是eslint和prettier版本冲突,导致无法识别resolveConfig方法。解决方案如下:

      1. 确保你安装的eslint和prettier版本是相同的,或者是兼容的。
      2. 在项目根目录下创建 .eslintrc.js 文件,添加以下配置。

      module.exports = { root: true, env: { node: true }, extends: [ "plugin:vue/essential", "eslint:recommended", "@vue/prettier" ], parserOptions: { parser: "babel-eslint" }, rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", "prettier/prettier": [ "error", { endOfLine: "auto" } ] } };

      1. 安装 eslint-plugin-prettier 和 eslint-config-prettier:

      npm install eslint-plugin-prettier eslint-config-prettier --save-dev

      1. 在 .eslintrc.js 文件中添加配置。

      module.exports = { root: true, env: { node: true }, extends: [ "plugin:vue/essential", "eslint:recommended", "@vue/prettier", "plugin:prettier/recommended" ], parserOptions: { parser: "babel-eslint" }, rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", "prettier/prettier": [ "error", { endOfLine: "auto" } ] } };

      1. 移除项目根目录下 .prettierrc 文件。

      以上是eslint与prettier冲突问题的解决方案。

      评论
    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-15 15:46
      关注

      引自免费微信小程序:皆我百晓生

      看起来你在使用ESLint和Prettier时遇到了一些兼容性问题。当同时使用这两个工具时,可能会因为它们都尝试配置代码格式化而导致冲突。为了解决这个问题,你需要确保ESLint使用的是Prettier插件,并且版本兼容。

      首先,确认一下你的项目中已经安装了eslint-plugin-prettiereslint-config-prettier两个依赖项。如果没有,可以通过以下命令进行安装:

      npm install --save-dev eslint-plugin-prettier eslint-config-prettier
      

      接下来,你需要更新你的.eslintrc.js(或.eslintrc.yaml.eslintrc.json等)文件,确保它包含了以下内容。这将告诉ESLint使用Prettier进行代码格式化。

      module.exports = {
        parser: '@typescript-eslint/parser', // 如果是TypeScript项目,保留这一行;否则可以删除
        parserOptions: {
          ecmaVersion: 2021,
          sourceType: 'module',
          ecmaFeatures: {
            jsx: true,
          },
        },
        extends: [
          'plugin:react/recommended', // 如果有React项目,保留这一行;否则可以删除
          'plugin:prettier/recommended',
        ],
        plugins: ['react', 'prettier'],
        rules: {
          'prettier/prettier': ['error', { singleQuote: true }], // 根据个人喜好调整格式化规则
        },
      };
      

      注意:如果你的项目不是TypeScript,可以移除与TypeScript相关的部分。同样,如果不是React项目,也可以移除与React相关的部分。

      然后,在项目的根目录下创建一个名为.prettierrc.js的文件(如果你已经有.prettierrc或其他格式的Prettier配置文件,不需要创建新的)。添加以下内容:

      module.exports = {
        semi: false, // 根据个人喜好调整格式化规则
        trailingComma: 'none', // 根据个人喜好调整格式化规则
        singleQuote: true, // 根据个人喜好调整格式化规则
        printWidth: 80, // 根据个人喜好调整格式化规则
      };
      

      根据你的需求修改这些设置,比如单引号、换行符等。

      最后,确保在package.json中的脚本部分,ESLint的执行顺序在Prettier之前。例如:

      "scripts": {
        "lint": "eslint . && prettier --write .",
        ...
      }
      

      这样做的目的是先用ESLint检查代码风格,然后再用Prettier按照指定的规则格式化代码。这样做能解决大部分的冲突问题。

      执行npm run lintyarn lint看看是否还有错误。如果仍然有问题,可能是因为你的项目中存在不被Prettier支持的特殊语法或配置。此时,你可以在需要忽略的地方添加注释来跳过特定行的检查:

      // prettier-ignore
      const myVariable = 'This line will be ignored by Prettier';
      

      或者在文件顶部添加:

      /* eslint-env es6 */
      /* eslint-disable */
      

      这将禁用整个文件的ESLint检查。但是,这并不是最佳实践,你应该尽可能地修复代码,使其符合ESLint和Prettier的规范。

      完成上述步骤后,应该就能解决你在Vue组件中遇到的prettier.resolveConfig.sync is not a function错误。如果有任何疑问或继续遇到问题,请随时提问。

      展开全部

      评论 编辑记录
    • GISer Liu 2024-04-15 16:07
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      问题的根源是ESLint和Prettier之间的冲突,导致在运行时出现错误。具体来说,错误信息指出了一个函数调用问题:prettier.resolveConfig.sync is not a function。这意味着ESLint正在试图调用prettier.resolveConfig.sync这个函数,但它并不存在,因此导致了错误。
      解决这个问题的思路是解决ESLint和Prettier之间的配置冲突,确保它们能够协同工作而不会相互干扰。下面是解决方案的步骤:

      1. 确保项目中安装了必要的依赖 :首先,确保项目中安装了ESLint和Prettier以及它们的相关插件。可以在项目的package.json文件中查看依赖项。
      2. 配置ESLint与Prettier :在项目中,需要配置ESLint和Prettier,以确保它们能够正确地协同工作。通常情况下,需要在项目根目录下创建.eslintrc.js文件,并配置ESLint的规则,同时在项目根目录下创建.prettierrc文件,并配置Prettier的规则。确保两者的规则不会相互冲突。
      3. 禁用ESLint中与Prettier冲突的规则 :在ESLint配置中,需要禁用与Prettier冲突的规则,以避免出现类似prettier.resolveConfig.sync is not a function的错误。可以通过在.eslintrc.js文件中添加相应的配置来实现,比如:
        javascriptCopy code
        module.exports = {
        // 其他配置...
        rules: {
        // 其他规则...
        "prettier/prettier": "off", // 禁用与Prettier冲突的规则
        },
        };
        
      4. 使用VS Code插件 :如果你在使用VS Code,可以安装ESLint和Prettier的相关插件,这些插件可以帮助你在代码编写过程中自动格式化代码,并提供实时的错误提示。
      5. 重新运行项目 :完成以上步骤后,重新运行项目,确保错误不再出现。
        通过以上步骤,你应该能够解决ESLint与Prettier之间的冲突问题,让它们能够在项目中正常协同工作。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    vue axios二次封装方法实现
    SAP ABAP Function Module 的动态调用方式使用方式介绍试读版
    Selenium安装WebDriver(含116/117/118/119)
    信息系统项目管理-组织级项目管理-十八
    2022亚太杯数学建模竞赛C题思路解析
    一专多能、创新力十足,南大通用GBase8c数据库获鲲鹏创新应用大赛金奖
    StringSubstitutor
    sublime编辑latex 出现参考文献无法编译报错:citation “...” undefined
    常见的引起膀胱结石的六大原因
    Android音视频开发系列:手撕FFmpeg音视频编解码
  • 原文地址:https://ask.csdn.net/questions/8088838