Java 在Play框架中导入React组件

Java 在Play框架中导入React组件,java,reactjs,playframework,Java,Reactjs,Playframework,我正在尝试使用React在Play框架中呈现UI。我有我的react组件在多个文件中,并试图将组件从一个文件导入到另一个文件中,但在编译时总是出现以下错误 “非法进口报关”和非法出口报关 组件1.jsx 从“/Component2”导入{Component2} 类Component1扩展了React.Component{ render(){ 你好 } } ReactDOM.render(,document.getElementById('headerLine')) 组件2.jsx 导出类组件2

我正在尝试使用React在Play框架中呈现UI。我有我的react组件在多个文件中,并试图将组件从一个文件导入到另一个文件中,但在编译时总是出现以下错误 “非法进口报关”非法出口报关

组件1.jsx
从“/Component2”导入{Component2}
类Component1扩展了React.Component{
render(){
你好
}
}
ReactDOM.render(,document.getElementById('headerLine'))
组件2.jsx 导出类组件2扩展了React.Component{ render(){ 世界 } } 正在使用的播放框架版本是2.4.2。
React版本0.14.3。 这里可能存在什么问题? 我需要使用像webpack或browserify这样的捆绑包吗?如果是,如何使用play framework?

是的,您需要捆绑javascript,而浏览器不支持


要在play框架中做到这一点,您有两个选择,一个是使用play框架中处理资产的标准方法(我非常不喜欢),或者您可以像通常一样简单地使用webpack,并在构建中添加一个钩子来捆绑应用程序。下面是有关如何在启动服务器之前调用另一个进程的详细信息

关于上面的代码,不确定这是否是原因,但render方法的定义如下:render(){..}。我认为render(…)是一种无效语法(请检查这里的第一个示例)。另一件事是render方法必须返回一个元素,而不是像第一个render方法那样返回2个元素。因此,组件2应该在元素中。我面临着同样的问题,但看到您解决了它,我想知道您是否使用sbt webpack或编写了自己的模块?我参考了以下链接:[link]()以使其正常工作。它不使用sbt webpack,而是使用下面的答案中提到的Play hook。我尝试了这个链接,当我运行sbt run时,我得到了java.io.IOException:无法运行程序“webpack”(在目录“/Volumes/Data/Play react webpack”中):错误=2,java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)没有这样的文件或目录原因:java.io.IOException:error=2,java.lang.UNIXProcess.forkAndExec(本机方法)java.lang.UNIXProcess.(unixproces.java:247)java.lang.ProcessImpl.start(ProcessImpl.java:134)java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)中没有这样的文件或目录,也就是说,使用webpack和Play hook,让应用程序运行。
 import {Component2} from './Component2'
 class Component1 extends React.Component{
    render(){
       <div><h1>Hello</h1>
         <Component2 />
         </div>
    }
 }

ReactDOM.render(<Component1 />, document.getElementById('headerLine'))
export class Component2 extends React.Component{
   render(){
   <div><h1>World</h1></div>
   }
}