umijs / dumi

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

Cannot find module 'umi/bin/umi' #364

Closed paradox010 closed 3 years ago

paradox010 commented 3 years ago

Question

不是稳定的bug: 线上构建的时候,执行完npm install再打包的石化,会提示Cannot find module 'umi/bin/umi'。 这个bug很难稳定复现出来,开发环境的时候偶尔也会出现,

Sample Code

我的依赖项 "dependencies": { "dumi": "1.1.0-beta.30", "rc-image": "^4.1.0", "react": "^16.12.0" }, "devDependencies": { "@ant-design/tools": "^10.0.1", "@types/enzyme": "^3.10.5", "@types/classnames": "^2.2.10", "@umijs/preset-react": "1.x", "@umijs/test": "^3.0.5", "father-build": "^1.17.2", "gh-pages": "^3.0.0", "lint-staged": "^10.0.7", "prettier": "^1.19.1", "yorkie": "^2.0.0", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.14.0", "enzyme-to-json": "^3.3.5", "xhr-mock": "^2.4.1", "xhr2": "^0.2.0", "mockdate": "^3.0.0", "cz-conventional-changelog": "^3.3.0", "rc-queue-anim": "^1.4.0", "rc-scroll-anim": "^2.0.2", "rc-texty": "^0.2.0", "rc-tween-one": "^2.6.5" },

PeachScript commented 3 years ago

没有复现 repo 也没有复现步骤,这怎么玩…

PeachScript commented 3 years ago

另外 dumi 不要写死版本号以及应该写进 devDependencies

paradox010 commented 3 years ago

另外 dumi 不要写死版本号以及应该写进 devDependencies

因为之前eslint有个版本bug,只有在dumi的beta版中解决了,所以我固定了dumi的版本号

paradox010 commented 3 years ago

------ 这个是错误的解决方案 --------- 啊我好像找到问题了,对比两次的构建日志 错误的构建触发了 uninstall.js

yorkie@2.0.0 uninstall /var/lib/jenkins/workspace/front_lzdesign_fix_web/node_modules/yorkie node bin/uninstall.js

husky uninstalling Git hooks done

我搜索了一下 husky的老issue中有提到这个问题 https://github.com/typicode/husky/issues/426 但是回复也只说在新版本解决了这个问题。所以我把yorkie换成了husky^4.0.3。这样线上通过webhook触发构建是ok的。

------- 这是正确的解决方案 ---------- 我下午又测了一下,发现并不是这回事。和husky的版本是没关系的,和node的版本有关系,node@12.18.3下,husky/yorkie的重新install都会导致umi/dumi安装不上。我降级到了10.14.0(没有测过其他版本)就可以了。 或者yarn install也是可以的。

PeachScript commented 3 years ago

因为之前eslint有个版本bug,只有在dumi的beta版中解决了,所以我固定了dumi的版本号

可以用 next tag,beta 版发版会很频繁,锁死版本会导致 bugfix 无法及时获取到

paradox010 commented 3 years ago

因为之前eslint有个版本bug,只有在dumi的beta版中解决了,所以我固定了dumi的版本号

可以用 next tag,beta 版发版会很频繁,锁死版本会导致 bugfix 无法及时获取到

了解了谢谢!我之前的回答是错的,是node的版本导致了我这个问题。我已经修正了,希望后面有同样问题的人可以参考~