我有一个现有的Spring Boot应用程序,我希望添加一个Vaadin前端。
我有一个简单的视图类,如下所示:
@Route(value = "admin")
public class MainView extends VerticalLayout {
private TextField field = new TextField("Message");
private Button button = new Button("Click Me");
@PostConstruct
public void init() {
button.addClickListener(e -> Notification.show("Message: " + field.getValue()));
}
}
我已通过将.anyRequsts().permitAll()
添加到我的SecurityConfig
来禁用 Spring 安全性
当我运行该应用程序并在 Chrome 中导航到/admin
时,我收到以下错误,显示页面的预期位置。
Webpack Error
ERROR in ../target/frontend/generated-flow-imports.js
Module not found: Error: Can't resolve '@vaadin/vaadin-button/src/vaadin-button.js' in 'C:UserscameronIdeaProjectsbiometric-accesstargetfrontend'
@ ../target/frontend/generated-flow-imports.js 11:0-52
对于各种包,重复此操作几次。我在 Spring 控制台输出中也遇到了类似的错误。它还给出了一条消息,告诉我删除node_modules
,然后运行npm install
,我已经尝试过了。
Vaadin 文档没有提到这个问题,建议的步骤不起作用。
令人气愤的是,它以前正常工作,我不知道是什么变化使它停止工作。任何建议将不胜感激。
编辑
经过一番搜索,我意识到这可能是一个 npm 问题,而不是一个 vaadin 问题。npm "常见问题"页面建议运行npm clean
后跟npm install
来解决此错误。这解决了我的问题。
从 Vaadin 14.0.0 更新到 14.0.2 后我遇到了同样的问题。 删除node_modules
文件夹并运行prepare-frontend
目标是不够的。
在打包项目之前删除以下文件和文件夹:
- node_modules
- package-lock.json
- 包.json
- webpack.config.js
- webpack.generated .js
在pom 中更新 vaadin 版本后,有一个"干净"的目标来自动执行此操作会很好.xml