Question
最近在做一个Vaadin项目,遇到了一个问题,相同的代码,同组的一些同事可以正常启动使用,但是还有一些人在启动后无法正常访问前端页面,出现js代码空指针
[webpack] ERROR dev-webpack - ERROR in ../target/frontend/generated-flow-imports.js
[webpack] ERROR dev-webpack - Module not found: Error: Can't resolve '@vaadin/flow-frontend/datepickerConnector.js' in '/Users/mehdi/Documents/GitHub/skeleton-starter-flow-spring-test/target/frontend'
[webpack] ERROR dev-webpack - @ ../target/frontend/generated-flow-imports.js 12:0-54
Answer
查询源码后发现VaadinServletContextInitializer.java类中没有正确的加载到Vaadin的基础类,是由于没有vaadin框架没有正确读取到这个配置vaadin.whitelisted-packages
导致无法正确加载,解决办法:
添加参数
vaadin.whitelisted-packages=com/vaadin/flow/component
Set<Class<?>> classes = findByAnnotationOrSuperType(basePackages,
customLoader, annotations, superTypes)
.collect(Collectors.toSet());
上面这段代码是VaadinServletContextInitializer中的读取前端页面class的,但是在我的项目中这里仅仅能加载到项目中的前端View,并没有加载到Vaadin框架本身的class,这就是问题所在。
下面是一些从git上复制过来的Vaadin error分析:
更多关于Vaadin此异常的可参考以下page