正常build,报错信息如下
yarn run v1.12.3
$ cross-env API_ENV=test umi build
* Webpack █████████████████████████ after chunk asset optimization (93%)
AssertionError [ERR_ASSERTION]: chunk of vendors not found.
at D:\Code\Mine\Github\YuandingNew\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:104:27
at Array.forEach (<anonymous>)
at chunksToFiles (D:\Code\Mine\Github\YuandingNew\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:93:14)
at D:\Code\Mine\Github\YuandingNew\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:186:32
at Generator.next (<anonymous>)
at asyncGeneratorStep (D:\Code\Mine\Github\YuandingNew\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:62:103)
at _next (D:\Code\Mine\Github\YuandingNew\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:64:194)
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: true,
operator: '=='
}
build failed
Error: build failed
at D:\Code\Mine\Github\YuandingNew\node_modules\@umijs\bundler-webpack\lib\index.js:108:27
at finalCallback (D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\MultiCompiler.js:254:12)
at D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\MultiCompiler.js:275:14
at D:\Code\Mine\Github\YuandingNew\node_modules\neo-async\async.js:2830:7
at done (D:\Code\Mine\Github\YuandingNew\node_modules\neo-async\async.js:2925:13)
at D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\MultiCompiler.js:186:23
at D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\MultiCompiler.js:267:15
at finalCallback (D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\Compiler.js:257:39)
at D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\Compiler.js:279:21
at D:\Code\Mine\Github\YuandingNew\node_modules\webpack\lib\Compiler.js:492:20
at eval (eval at create (D:\Code\Mine\Github\YuandingNew\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:62:1)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
如何复现?
无法复现了
我仍然可以复现,就按照官网上的配置写,执行yarn start的时候就会报这个错:
(node:84004) UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]: chunk of vendors not found.
at D:\bedroom\gitrepo\ruanshizi_mono\ruanshizi5\frontend-umi\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:104:27
at Array.forEach (<anonymous>)
at chunksToFiles (D:\bedroom\gitrepo\ruanshizi_mono\ruanshizi5\frontend-umi\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:93:14)
at D:\bedroom\gitrepo\ruanshizi_mono\ruanshizi5\frontend-umi\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:186:32
at Generator.next (<anonymous>)
at asyncGeneratorStep (D:\bedroom\gitrepo\ruanshizi_mono\ruanshizi5\frontend-umi\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:62:103)
at _next (D:\bedroom\gitrepo\ruanshizi_mono\ruanshizi5\frontend-umi\node_modules\@umijs\preset-built-in\lib\plugins\commands\htmlUtils.js:64:194)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
(node:84004) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:84004) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
umi 3.2.20 配置splitchunk之后 仍然有此问题
看来这非个例,还是open吧
出问题的有没有在 service 里面引入 page 文件里的东西,可能跟这个有关,我有小伙伴也遇到了这个问题,例如这样:

如何复现?
按照官网配置,umi3.2.24 同样也复现了
如何复现?
复现仓库: https://github.com/zhaozhiming/umi-build
执行命令: yarn build 就会报上面的错误
@xiaohuoni
@zhaozhiming 你这么配置不会生成 vendors 文件,所以引入错误。https://github.com/zhaozhiming/umi-build/pull/1
@xiaohuoni 谢谢。我是按照 umi 的文档把配置内容拷过来的(chunks),可能那个文档需要改下。
@xiaohuoni 同问,为什么minChunks改成1就可以了呢?
@xiaohuoni 谢谢。我是按照 umi 的文档把配置内容拷过来的(chunks),可能那个文档需要改下。
文档只是例子,这里要根据自己的需求拆包,才有配置它的必要。
@xiaohuoni 官方文档对splitChunks.minChunks的释义:
Minimum number of chunks that must share a module before splitting.
这有些简略了……
你看我这样理解对不对:
minChunks设为3表示,node_modules里的任意模块被不同的chunk引入大于等于3次,则将它们抽离成为一个单独的chunk,且该chunk名字叫vendors,否则不生成这个单独的chunk。所以在一个比较小的repo(src下代码还很少)中,引用
node_modules里的任意模块没有超过3次的话,就会报错找不到vendors这个chunk,因为它根本就没生成。此时将minChunks变为1,只要引用了1次就生成vendors chunk,就不会报错了。
如果我的理解有误,还望指正。
@xiaohuoni 官方文档对
splitChunks.minChunks的释义:Minimum number of chunks that must share a module before splitting.
这有些简略了……
你看我这样理解对不对:
minChunks设为3表示,node_modules里的任意模块被不同的chunk引入大于等于3次,则将它们抽离成为一个单独的chunk,且该chunk名字叫vendors,否则不生成这个单独的chunk。
所以在一个比较小的repo(src下代码还很少)中,引用node_modules里的任意模块没有超过3次的话,就会报错找不到vendors这个chunk,因为它根本就没生成。此时将minChunks变为1,只要引用了1次就生成vendors chunk,就不会报错了。如果我的理解有误,还望指正。
@athrunsun 应该差不多是这个意思,但可能不是"引用node_modules里的任意模块没有超过3次",因为我有个项目超过3次了也报这个错。
遇到了这个问题
环境信息:
"umi": "^3.4.0"
刷了两遍官方文档后发现设置 splitChunks 的时候需要同时配置 dynamicImport 这个属性. 两者的联系还没有确定(没有研究大佬的源码). 但是配置上以后就不再报 chunk of vendors not found. 这个错误了 ~
dynamicImport api 传送门
具体原因还不知道是啥, 希望后来的大佬能给解惑一下.