ant-design / ant-design-pro

👨🏻‍💻👩🏻‍💻 Use Ant Design like a Pro!
https://pro.ant.design
MIT License
36.35k stars 8.14k forks source link

🧐[问题] 重新install项目run lint报错 #7953

Closed zhouzongren closed 3 years ago

zhouzongren commented 3 years ago

🧐 问题描述

pro v4版本,移除package-lock.json和node_modules重新install之后,run lint报错

💻 示例代码

// .eslintrc.js
module.exports = {
  extends: [require.resolve('@umijs/fabric/dist/eslint')],
  rules: {
    'import/no-unresolved': [
      2,
      {
        ignore: ['^@/', '^@@/', '^@alipay/bigfish/', '^@config/'],
        caseSensitive: true,
        commonjs: true,
      },
    ],
  },
  globals: {
    page: true,
    REACT_APP_ENV: true,
  },
};

报错信息

project git:(hotfix/fabric) ✗ npm run lint 

> project@1.0.0 lint /Users/name/workspace/project
> npm run lint:js && npm run lint:style && npm run lint:prettier

> project@1.0.0 lint:js /Users/name/workspace/project
> eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src

Error: Cannot read config file: /Users/name/workspace/project/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended
Error: ENOENT: no such file or directory, open '/Users/name/workspace/project/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended'
Referenced from: /Users/name/workspace/project/node_modules/@typescript-eslint/eslint-plugin/dist/index.js
Referenced from: /Users/name/workspace/project/node_modules/@umijs/fabric/dist/eslint.js
Referenced from: /Users/name/workspace/project/.eslintrc.js
    at Object.openSync (fs.js:465:3)
    at Object.readFileSync (fs.js:368:35)
    at readFile (/Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:64:15)
    at loadLegacyConfigFile (/Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:141:44)
    at loadConfigFile (/Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:240:22)
    at loadFromDisk (/Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:523:18)
    at load (/Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:587:20)
    at /Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:453:36
    at Array.reduceRight (<anonymous>)
    at applyExtends (/Users/name/workspace/project/node_modules/eslint/lib/config/config-file.js:431:26)

© 版本信息

Ant Design Pro 版本: ^4 javascript 版本 umi 版本 浏览器环境 开发环境 mac OS

{
  "name": "wework.qiye.163.com",
  "version": "1.0.0",
  "private": true,
  "description": "An out-of-box UI solution for enterprise applications",
  "scripts": {
    "analyze": "cross-env ANALYZE=1 umi build",
    "build": "umi build",
    "deploy": "npm run site && npm run gh-pages",
    "dev": "npm run start:dev",
    "fetch:blocks": "pro fetch-blocks --branch antd@4 && npm run prettier",
    "gh-pages": "cp CNAME ./dist/ && gh-pages -d dist",
    "i18n-remove": "pro i18n-remove --locale=zh-CN --write",
    "lint": "npm run lint:js && npm run lint:style && npm run lint:prettier",
    "lint-staged": "lint-staged",
    "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
    "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style",
    "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
    "lint:prettier": "prettier --check \"**/*\" --end-of-line auto",
    "lint:style": "stylelint --fix \"src/**/*.less\" --syntax less",
    "prettier": "prettier -c --write \"**/*\"",
    "start": "umi dev",
    "start:dev": "cross-env REACT_APP_ENV=dev HOST=dev.wework.qiye.163.com MOCK=none umi dev",
    "start:no-mock": "cross-env MOCK=none umi dev",
    "start:no-ui": "cross-env UMI_UI=none umi dev",
    "start:pre": "cross-env REACT_APP_ENV=pre umi dev",
    "start:test": "cross-env REACT_APP_ENV=test MOCK=none umi dev",
    "test": "umi test",
    "test:all": "node ./tests/run-tests.js",
    "test:component": "umi test ./src/components",
    "tsc": "tsc",
    "ui": "umi ui"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint-staged"
    }
  },
  "lint-staged": {
    "**/*.less": "stylelint --syntax less",
    "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
    "**/*.{js,jsx,tsx,ts,less,md,json}": [
      "prettier --write"
    ]
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 10"
  ],
  "dependencies": {
    "@ant-design/icons": "^4.0.0-alpha.19",
    "@ant-design/pro-layout": "^5.0.12",
    "@ant-design/pro-table": "^2.12.0",
    "@antv/data-set": "^0.11.1",
    "antd": "^4.8.2",
    "async-validator": "^3.4.0",
    "braft-editor": "^2.3.9",
    "braft-utils": "^3.0.12",
    "classnames": "^2.2.6",
    "dva": "^2.6.0-beta.16",
    "lodash": "^4.17.20",
    "moment": "^2.26.0",
    "numeral": "^2.0.6",
    "nzh": "^1.0.4",
    "omit.js": "^1.0.2",
    "path-to-regexp": "2.4.0",
    "qs": "^6.9.4",
    "react": "^16.8.6",
    "react-copy-to-clipboard": "^5.0.1",
    "react-dom": "^16.8.6",
    "react-helmet": "^5.2.1",
    "redux": "^4.0.1",
    "umi": "^2.13.0",
    "umi-plugin-antd-icon-config": "^1.0.2",
    "umi-plugin-antd-theme": "1.2.0-0",
    "umi-plugin-pro-block": "^1.3.2",
    "umi-plugin-react": "^1.14.10",
    "umi-request": "^1.3.3",
    "use-merge-value": "^1.0.1"
  },
  "devDependencies": {
    "@ant-design/pro-cli": "^1.0.18",
    "@types/classnames": "^2.2.7",
    "@types/express": "^4.17.0",
    "@types/history": "^4.7.6",
    "@types/jest": "^25.2.3",
    "@types/lodash": "^4.14.152",
    "@types/mockjs": "^1.0.2",
    "@types/qs": "^6.9.3",
    "@types/react": "^16.9.35",
    "@types/react-dom": "^16.9.8",
    "@types/react-helmet": "^5.0.16",
    "@umijs/fabric": "^2.0.2",
    "chalk": "^3.0.0",
    "cross-env": "^7.0.0",
    "cross-port-killer": "^1.1.1",
    "enzyme": "^3.11.0",
    "express": "^4.17.1",
    "gh-pages": "^2.0.1",
    "husky": "^4.0.7",
    "jest-puppeteer": "^4.2.0",
    "jsdom-global": "^3.0.2",
    "lint-staged": "^10.2.4",
    "mockjs": "^1.1.0",
    "node-fetch": "^2.6.0",
    "prettier": "^1.19.1",
    "pro-download": "1.0.1",
    "stylelint": "^13.5.0",
    "umi-plugin-antd-icon-config": "^1.0.2",
    "umi-plugin-ga": "^1.1.8",
    "umi-plugin-pro": "^1.0.2",
    "umi-types": "^0.5.9"
  },
  "optionalDependencies": {
    "puppeteer": "^2.0.0"
  },
  "engines": {
    "node": ">=10.0.0"
  },
  "checkFiles": [
    "src/**/*.js*",
    "src/**/*.ts*",
    "src/**/*.less",
    "config/**/*.js*",
    "scripts/**/*.js"
  ]
}
chenshuai2144 commented 3 years ago

一个非常标准的 依赖冲突。

npm ls @typescript-eslint/eslint-plugin看看到底是什么东西影响了自带的依赖,然后删除掉它

zhouzongren commented 3 years ago

一个非常标准的 依赖冲突。

npm ls @typescript-eslint/eslint-plugin看看到底是什么东西影响了自带的依赖,然后删除掉它

└─┬ @umijs/fabric@2.5.2
  └── @typescript-eslint/eslint-plugin@4.13.0 

只有这一个依赖

chenshuai2144 commented 3 years ago

重新安装一下吧!官方的ci复现不了这个问题

zhouzongren commented 3 years ago

重新安装一下吧!官方的ci复现不了这个问题

应该是@umijs/fabric 从2.3.1 -> ^2.4.1 的一些 eslint 依赖改变引起的,回退到2.3.1 再重新安装 eslint-plugin-import, 修改一些jsconfig的配置基本上可以解决。我的项目大概是去年4月份initial的 最近换了设备重新install就出现这个问题。

zhouzongren commented 3 years ago

大意了,应该吧package-lock也加到git里面去

holiday12138 commented 3 years ago

是不是有一部分lint的依赖版本不受lock控制。。

chenshuai2144 commented 3 years ago

lock 能锁定大部分的

holiday12138 commented 3 years ago

lock 能锁定大部分的

大概一个月左右,某次线上CI lint就开始报错,本地就没问题。 本地删除node modules和lock,重新install就跟线上一样了,感觉就是突然更新了很多规则,但是lock文件本身没变化。

zhouzongren commented 3 years ago

lock 能锁定大部分的

大概一个月左右,某次线上CI lint就开始报错,本地就没问题。 本地删除node modules和lock,重新install就跟线上一样了,感觉就是突然更新了很多规则,但是lock文件本身没变化。

lock没变化依赖基本不会变动的 我这边lock没有维护到git 但是ci有做node_module的cache 所以没问题 本地手贱rm了lock 就有这个问题了

holiday12138 commented 3 years ago

lock 能锁定大部分的

大概一个月左右,某次线上CI lint就开始报错,本地就没问题。 本地删除node modules和lock,重新install就跟线上一样了,感觉就是突然更新了很多规则,但是lock文件本身没变化。

lock没变化依赖基本不会变动的 我这边lock没有维护到git 但是ci有做node_module的cache 所以没问题 本地手贱rm了lock 就有这个问题了

感觉umi上有一些依赖会动态更新