gpt4 book ai didi

reactjs - 将 Flask 服务器添加到 create-react-app 默认应用程序,/dist/bundle.js 上的 404

转载 作者:行者123 更新时间:2023-12-03 16:48:12 29 4
gpt4 key购买 nike

我正在尝试将 flask 服务器连接到使用 create-react-app 创建的 react 应用程序,并使用 webpack 捆绑它。我主要关注通过this 学到的东西。项目和this随附的视频,除了我使用默认的 create-react-app 作为起点。
这是我的目录结构

-SimpleApp
--server
----server.py
----__init__.py
--static
----dist
------bundle.js
------styles.css
----node-modules
----src
----package.json
----package-lock.json
----webpack.config.js
----index.html
----__init__.py
--venv
基本上我的“静态”文件夹是默认的 react-app,加上一个 index.html、一个配置文件和一个空的 初始化 .py。
我的 server.py 很简单,我在其中设置了我的 static_folder 和 template_folder
服务器.py
from flask import Flask, render_template, jsonify

app = Flask(__name__, static_folder='..static/dist', template_folder='../static')

@app.route('/')
def index():
return render_template('index.html')

if __name__ == '__main__':
app.run()
它调用我的 index.html 看起来像
索引.html
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">
<link rel="stylesheet" href="dist/styles.css">
<title>simple app</title>
</head>
<body>
<div id="root" />
<div>Hello</div>
<script src="dist/bundle.js" type="text/javascript"></script>
</body>
</html>
我的 webpack.config.js 是
webpack.config.js
const webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');

const config = {
entry: __dirname + '/src/index.js',
output: {
path: path.join(__dirname + '/dist'),
filename: 'bundle.js',
},
resolve: {
extensions: [".js", ".jsx", ".css"]
},
module: {
rules: [
{
test: /\.jsx?/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader',
})
},
{
test: /\.(png|svg|jpg|gif)$/,
use: 'file-loader'
}
]
},
plugins: [
new ExtractTextPlugin('styles.css'),
]
};

module.exports = config;

包.json
{
"name": "simpleapp",
"version": "1.0.0",
"description": "Fullstack Template",
"main": "index.js",
"scripts": {
"build": "webpack -p --progress --config webpack.config.js",
"dev-build": "webpack --progress -d --config webpack.config.js",
"test": "echo \"Error: no test specified\" && exit 1",
"watch": "webpack --progress -d --config webpack.config.js --watch"
},
"babel": {
"presets": [
"es2015",
"react"
]
},
"devDependencies": {
"babel-core": "^6.25.0",
"babel-loader": "^7.0.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.4",
"extract-text-webpack-plugin": "^2.1.2",
"file-loader": "^0.11.2",
"jquery": "^3.2.1",
"react": "^15.6.1",
"react-bootstrap": "^0.31.0",
"react-dom": "^15.6.1",
"style-loader": "^0.18.2",
"webpack": "^3.12.0",
"webpack-cli": "^3.2.1"
}
}
我运行 npm run watch 和 python server.py 我得到了
"GET /dist/styles.css HTTP/1.1" 404 -
"GET /dist/bundle.js HTTP/1.1" 404
这似乎可以追溯到 index.html。我不认为我的配置或包文件与它有任何关系,但我是编写这些的新手,不想误解。
未找到的文件在我的应用程序的 static_folder 中,为什么找不到它们?
我可能遗漏了一些基本概念。如果是这样,请指出我正确的方向
提前致谢!

最佳答案

app = Flask(__name__, static_folder='..static/dist', template_folder='../static')

以上可能是令人困惑的事情, ..static../static 不一样

编辑 : 刚刚看了你链接的教程。我将在下面留下我之前写的答案,但将上面的错字更正为 static_folder='../static/dist可能是解决您的问题的更快方法。

就个人而言,我会通过执行以下操作来简化这一点:
  • 请注意,您的 server.py坐在server目录
  • 在此 server 中创建 2 个子目录目录:templatesstatic
  • 将 index.html 移至 server/templates
  • 移动所有静态文件,包括 dist server/static 的子目录

  • 现在目录结构应该更像:
    SimpleApp
    └── server
    ├── __init__.py
    ├── server.py
    ├── static
    │   └── dist
    │   ├── bundle.js
    │   └── styles.css
    └── templates
    └── index.html

    然后只需使用以下命令初始化应用程序:
    app = Flask(__name__)

    无需在此处定义静态和模板目录,因为您已将其布置在 Flask 期望的默认结构中。

    尝试打: http://localhost:5000/static/dist/bundle.js在浏览器中并确认此加载正确。

    然后更新模板以从正确的位置加载这些文件,使用 url_for在模板中:
    <link rel="stylesheet"
    href="{{ url_for('static', filename='dist/styles.css') }}"
    >


    <script type="text/javascript"
    src="{{ url_for('static', filename='dist/bundle.js') }}"
    >

    如果你重新生成 bundle.js稍后,您可能还需要调整 webpack 配置以将其放置在新位置。

    关于reactjs - 将 Flask 服务器添加到 create-react-app 默认应用程序,/dist/bundle.js 上的 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54263609/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com