我为Vaadin 14+找到了非常有前途的VStepper插件,但不幸的是,我无法使用Vaadin 20运行它。
当使用VStepper添加一些代码时,我总是得到java.lang.IollegalStateException。其他人也有同样的问题吗?
Tomcat 8存在此问题。插件正在使用Springboot。v-stepper.js被添加到node_modules/@vaadin/flow frontend/中,但NpmTemplateParser找不到它。
Stacktrace:
java.lang.IllegalStateException: Couldn't find the definition of the element with tag 'v-stepper' in any template file declared using '@JsModule' annotations. Check the availability of the template files in your WAR file or provide alternative implementation of the method getTemplateContent() which should return an element representing the content of the template file
at com.vaadin.flow.component.polymertemplate.NpmTemplateParser.getTemplateContent(NpmTemplateParser.java:155)
at com.vaadin.flow.component.polymertemplate.TemplateDataAnalyzer.parseTemplate(TemplateDataAnalyzer.java:217)
at com.vaadin.flow.component.polymertemplate.TemplateInitializer.<init>(TemplateInitializer.java:100)
at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:94)
at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:109)
at com.mlottmann.vstepper.VStepper.<init>(VStepper.java:53)
编辑:
我在Windows上也遇到了同样的问题。使用原始的vaadin-starter下载(vaadin20,java8,仅限flow(并添加Addon,我会收到相同的错误消息。
调试显示了相同的问题:
AbstractConfiguration.class
default String getFlowResourcesFolder() {
return Paths.get(getBuildFolder(),
FrontendUtils.DEFAULT_FLOW_RESOURCES_FOLDER).toString();
}
在Windows上返回targetflow-frontend
,在Linux 上返回target/flow-frontend
由于BundleParser
if (name.contains(FLOW_NPM_PACKAGE_NAME) || name.contains(service
.getDeploymentConfiguration().getFlowResourcesFolder())) {
alternativeFileName = alternativeFileName.replaceFirst("\./",
"");
}
使用CCD_ 4来检查前导"/"应该删除的是在Windows中失败但在Linux上工作(原因名称是"../target/flow frontend/v-steper.js"(
我尝试调试它,发现给定的webpack生成的stats.js中的文件夹名称与getFlowResourcesFolder((返回的构建文件夹不匹配其为";target \ flow fontend";stats.js中模块的名称是"…"/target/flow frontend/v-stepider.js";
,{"id":"../target/flow-frontend/v-stepper.js","name":"../target/flow-frontend/v-stepper.js","source":"import { ....
这种情况发生在流动聚合物模板-7.0.2.jar->com.vaadin.flow.component.polymertemplate.BundleParser.getSourceFromObject(..(L:269
if (name.contains(FLOW_NPM_PACKAGE_NAME) || name.contains(service
.getDeploymentConfiguration().getFlowResourcesFolder())) {
alternativeFileName = alternativeFileName.replaceFirst("\./",
"");
}
调试可变内容的代码段
环境为WIN10、Tomcat 8.5.x、Java 8、Vaadin 20.0.3、mvn构建、Vaadin NONE生产模式、无spring
不幸的是,该插件还不支持Vaadin 20。我问过作者,但他现在没有时间研究。