我有一个带有API路由的Flask后端,可通过使用create-react-app创建的React单页应用程序访问。当使用create-react-
app开发服务器时,我的Flask后端可以工作。
我想npm run build
从我的Flask服务器提供内置的(使用)静态React应用程序。构建React应用会导致以下目录结构:
- build
- static
- css
- style.[crypto].css
- style.[crypto].css.map
- js
- main.[crypto].js
- main.[crypto].js.map
- index.html
- service-worker.js
- [more meta files]
通过[crypto]
,我的意思是在构建时所产生的随机生成的字符串。
收到index.html
文件后,浏览器将发出以下请求:
- GET /static/css/main.[crypto].css
- GET /static/css/main.[crypto].css
- GET /service-worker.js
我应该如何提供这些文件?我想出了这个:
from flask import Blueprint, send_from_directory
static = Blueprint('static', __name__)
@static.route('/')
def serve_static_index():
return send_from_directory('../client/build/', 'index.html')
@static.route('/static/<path:path>') # serve whatever the client requested in the static folder
def serve_static(path):
return send_from_directory('../client/build/static/', path)
@static.route('/service-worker.js')
def serve_worker():
return send_from_directory('../client/build/', 'service-worker.js')
这样,静态资产就可以成功使用。
另一方面,我可以将其与内置的Flask静态实用程序合并。但是我不知道如何配置它。
我的解决方案足够强大吗?有没有办法使用内置的Flask功能来提供这些资产?有没有更好的方法来使用create-react-app?
import os
from flask import Flask, send_from_directory
app = Flask(__name__, static_folder='react_app/build')
# Serve React App
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def serve(path):
if path != "" and os.path.exists(app.static_folder + '/' + path):
return send_from_directory(app.static_folder, path)
else:
return send_from_directory(app.static_folder, 'index.html')
if __name__ == '__main__':
app.run(use_reloader=True, port=5000, threaded=True)
那就是我最终得到的。因此,基本上捕获所有路由,测试路径是否为文件=>发送文件=>否则发送index.html。这样,您可以从任何希望的路线重新加载react应用,并且不会中断。
创建响应应用时,图像中出现错误。它一直在正常工作,我所做的就是mkdir和cd到那个dir。 这就是错误的样子... NPX:在36.634s中安装了99必须使用导入来加载ES模块: C:\用户\Neeraj\AppData\漫游\npm-cache_npx\5172\node_modules\create-react-app\node_modules\is-promise\index.js不支持
~$npm create-react-app my-app 安装软件包。这可能需要几分钟。使用cra-template安装react、react-dom和react-scripts... core-js@2.6.11 postinstall/home/ubuntu/my-app/node_modules/babel-runtime/node_modules/core-js node-e“try{r
我想使用npx create-react-app my-app创建一个反应应用程序,它运行并创建一个带有node_modules、package.json和yarn.lock的文件夹,而没有src和公用文件夹,它返回一个未提供的模板,这很可能是您使用的create-react-app版本过低,就像你们在屏幕截图中看到的那样。 节点 v16.15.1, npm v7.24.2 我用的这个命令 这是最
我正在尝试使用create react app创建我的应用程序。下面是一个错误 创建react应用程序我的应用程序 在C:\Users\racrk\React\my app中创建新的React应用程序。 安装软件包。这可能需要几分钟。正在安装react、react dom和react脚本。。。 core-js@2.6.9安装后C:\用户\racrk\React\my-app\node_module
Create React App 不用配置就可以创建 React App。 全局安装: npm install -g create-react-app 创建 App: create-react-app my-appcd my-app/ 启动 npm: npm start 打开 http://localhost:3000/ 查看你的 App。 如果你准备将其部署到生产环境,只需创建一个压缩包,并且运行 npm run build。
我正在尝试使用create react应用程序创建新应用程序 下面是错误<请帮忙。提前谢谢 CLI上的错误映像