正在寻求帮助,以了解如何部署使用Create-react-app构建的javascript应用。
我似乎无法配置SparkJava(通过内置Jetty)以服务通过Create-react-app构建的静态页面。
更新 我只需删除index.html就可以从SparkJava / Jetty提供静态页面 (例如。: https://myipaddress:4567 ) 从我的网址请求中。但是,我不知道为什么会这样,并且没有一个好的答案。因此,让问题悬而未决
当我转到https://myipaddress:4567/index.html时-我得到空白页,其标题和图标为正确的(表示已提供index.html)。 但是,由于未显示任何其他内容,因此我假设Js捆绑包脚本未得到正确的服务或处理。
但是,我看不到我在做什么错。
当从webpack的内置开发服务器提供服务时,js应用程序可以正常工作(使用npm run start运行时)。从'serve'软件包(这是一个专用的Node静态页面服务器...我正在运行npm -s build
,对于http来说工作正常)时,它也可以工作
sparkjava / jetty服务器似乎以正确的大小将index.html,main.css和main js包返回给Web浏览器。 没有网络错误。没有JavaScript错误。 没有核心问题...基本上没有任何问题的迹象。 我在使用sparkjava时使用https(该设置运行良好,因为同一后端用于json api服务)。 但是页面上的内容没有显示... 就像Jetty服务时,React并未在初始化自己。但是我看不到这是怎么可能的。 因此,希望有人能提供帮助。
以下是前端的步骤(事物的现实面)
0) create react app using npx create-react-app myapp1
2) cd myapp1 ; npm install (this is, of course, needs to be done once just to install npm modules
3) npm run build (this produced production optimized build into myapp1/build directory)
4) cp -r ./build/* /tmp/myapp1
5) note that the generated build has
manifest.json already configured
这是我在后端执行的步骤。使用SparkJava项目。
1)编辑Application.java以允许服务/ tmp / myapp1格式的文件 (其余内容与任何SparkJava设置相同)。
// Configure Spark
port(4567);
staticFiles.location("/public");
staticFiles.expireTime(600L);
staticFiles.externalLocation(System.getProperty("java.io.tmpdir")+"/myapp1");
SparkJava应用程序的build.gradle使用此版本的SparkJava
compile group: 'com.sparkjava', name: 'spark-core', version: '2.7.2'
compile group: 'com.sparkjava', name: 'spark-debug-tools', version: '0.5'
compile group: 'com.sparkjava', name: 'spark-template-velocity', version: '2.7.1'
compile group: 'com.sparkjava', name: 'spark-template-mustache', version: '2.7.1'
SparkJava中嵌入的Jetty版本是9.3.z-shapshot
在Linux 64上运行(但我确定该问题与底层操作系统无关)。