umijs / dumi

📖 Static Site Generator for component library development
https://d.umijs.org
MIT License
3.58k stars 1.18k forks source link

bug: 包冲突 #117

Closed mizi-lin closed 3 years ago

mizi-lin commented 4 years ago

包冲突

Module build failed (from ./node_modules/@umijs/preset-dumi/lib/loader/index.js):
Error: Failed to load plugin jsx-a11y: Cannot find module 'eslint-plugin-jsx-a11y'
Require stack:
- /Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/plugins.js
- /Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config.js
- /Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/cli-engine.js
- /Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/api.js
- /Users/Mizi/git/demo/dumi/node_modules/sylvanas/lib/eslintJs.js
- /Users/Mizi/git/demo/dumi/node_modules/sylvanas/lib/index.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/transformer/remark/rehype.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/transformer/remark/index.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/transformer/index.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/routes/getFrontMatter.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/routes/decorator/frontMatter.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/routes/decorator/index.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/routes/getRouteConfig.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/preset-dumi/lib/plugins/core.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/core/lib/Service/utils/pluginUtils.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/core/lib/Service/Service.js
- /Users/Mizi/git/demo/dumi/node_modules/@umijs/core/lib/index.js
- /Users/Mizi/git/demo/dumi/node_modules/umi/lib/ServiceWithBuiltIn.js
- /Users/Mizi/git/demo/dumi/node_modules/umi/lib/forkedDev.js
Referenced from: /Users/Mizi/git/demo/dumi/node_modules/eslint-config-airbnb/index.js
Referenced from: /Users/Mizi/git/demo/dumi/node_modules/eslint-config-airbnb-typescript/index.js
Referenced from:
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:797:15)
    at Function.resolve (internal/modules/cjs/helpers.js:80:19)
    at Plugins.load (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/plugins.js:104:29)
    at Array.forEach (<anonymous>)
    at Plugins.loadAll (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/plugins.js:165:21)
    at loadFromDisk (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:529:35)
    at load (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:587:20)
    at /Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:453:36
    at Array.reduceRight (<anonymous>)
    at applyExtends (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:431:26)
    at loadFromDisk (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:551:22)
    at load (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:587:20)
    at /Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:453:36
    at Array.reduceRight (<anonymous>)
    at applyExtends (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:431:26)
    at loadFromDisk (/Users/Mizi/git/demo/dumi/node_modules/sylvanas/node_modules/eslint/lib/config/config-file.js:551:22)

 @ ./.umi/core/routes.ts 25:17-43
 @ ./.umi/umi.ts
 @ multi ./node_modules/@umijs/bundler-webpack/lib/webpackHotDevClient/webpackHotDevClient.js ./.umi/umi.ts
mizi-lin commented 4 years ago

最小复现

git@github.com:mizi-lin/dumi-issues.git

$ yarn 
$ ./node_nodules/.bin/dumi dev
mizi-lin commented 4 years ago
{
    "dependencies": {
        "eslint": "^6.8.0",
        "react": "16.13.0",
        "react-dom": "16.13.0",
        "umi": "3.0.7"
    },
    "devDependencies": {
        "dumi": "1.0.5",
        "typescript": "3.8.2"
    }
}

经测试,只要安装 eslint 的包,就会报错·~~

henryzp commented 4 years ago

@mizi-lin ,这个和dumi没关系。。。应该是eslint的锅,我昨天也碰到了类似的问题,装就是了。。

就是它提示你什么module找不到,就装什么module

mizi-lin commented 4 years ago

@henryzp

在@umijs/fabric 加载了一个低版本eslint(eslint "^5.16.0")的包,由这个低版本的包引起的问题 而这个包又是 dumi 依赖包 sylvanas 下的依赖包

解决方案也简单 无需装提示的包,配置 package.resolutions.eslint: '^6.8.0', 解决包依赖版本不一致就好;

但最好能从根源上解决这个问题·~~

henryzp commented 4 years ago

@mizi-lin 突然发现你曾经是面试我的人。。。你的这个解法可以,我可能比较着急,所以按它提示的缺什么缺什么了。

fjc0k commented 4 years ago

yarn + eslint 6 + dumi 自带的 eslint 5,百分百重现,由于 ESLint 的 resolve 机制问题(https://github.com/eslint/eslint/issues/3458)以及 yarn 把依赖拍平,目前无解。

但可以使用 npm 作为包管理器解决,同时还要 patch 一下 ESLint 糟糕的 resolve 机制:

// .eslintrc.js
require("@rushstack/eslint-config/patch-eslint6")

module.exports = {
  // ....
}
PeachScript commented 3 years ago

来自 @crazyair 建议,v1.1.0-beta.32 中开始使用 TypeScript Playground 在线链接代替编译时 sylvanas 转 TSX,应该不存在这个问题了,运行平稳的话会在 1.1 正式版的时候 close 该 issue