Closed
Description
Version
3.0.1
Reproduction link
https://github.com/fxxjdedd/vue-cli3-import-test.git
Node and OS info
Node 10.3.0, yarn 1.9.4, Windows10
Steps to reproduce
yarn install && yarn serve
What is expected?
running
What is actually happening?
crashed with error:
RangeError: Maximum call stack size exceeded
- Array.join
- loader.js:228 Function.Module._findPath
internal/modules/cjs/loader.js:228:56
- loader.js:591 Function.Module._resolveFilename
internal/modules/cjs/loader.js:591:25
- loader.js:520 Function.Module._load
internal/modules/cjs/loader.js:520:25
- loader.js:650 Module.require
internal/modules/cjs/loader.js:650:17
- helpers.js:20 require
internal/modules/cjs/helpers.js:20:18
- extract-chunks.js:35 getNames
[vue-cli3-import-test]/[@vue]/preload-webpack-plugin/src/lib/extract-chunks.js:35:22
- extract-chunks.js:44 getNames
[vue-cli3-import-test]/[@vue]/preload-webpack-plugin/src/lib/extract-chunks.js:44:21
概述:
这个问题是在我迁移项目到cli3时遇到的,项目中使用到了import(),并且它的参数是一个变量。
我总结了一下,出现这个问题的需要两个条件:
-
使用了Webpack的import()动态导入功能,且参数是一个变量(这个变量即使已经限制了文件夹范围,依然会有问题)。
-
包含上述行为的.js文件在多页面应用中被多个page同时引用(我实验了一下,发现至少需要3个page)。另外,更加奇怪的是,从非pages文件引入就没这个问题。
注意:
需要结合我给的reproduction项目看一下:
- 写了一个src/common/index.js, 用来引入pages和non-pages里的import-test模块
- pages中一共有4个page,在其中A、B、C三个page里的app.js中,引入common/index.js
- 为了验证从非pages文件夹中引入是否有问题,新建了一个no-pages文件夹