问题摘要
我最近尝试将我的本地应用程序部署到Heroku.它使用Flask后端和React/Redux前端构建.在完成Heroku的复杂(procfiles,它读取package.json等)后,我能够得到后端显示(例如:flask-admin部分和我的数据库一样),但是我我仍然无法到达我网站的前端(反应)部分.我可以在Heroku日志和本地版本中看到没有错误,当我启动我的python服务器并NPM start在静态目录中运行时,我的应用程序工作得很好.
知道为什么前端不会显示或如何访问它?
日志:
我从细节中删除了一些敏感信息,但是heroku logs --tail当我尝试刷新应用程序时,这就是我的内容.
2018-02-11T01:18:01.000000+00:00 app[api]: Build succeeded
2018-02-11T01:21:12.305017+00:00 heroku[web.1]: Starting process with command `gunicorn main:app`
2018-02-11T01:21:16.374150+00:00 heroku[web.1]: State changed from starting to up
2018-02-11T01:21:15.948707+00:00 app[web.1]: [2018-02-11 01:21:15 +0000] [4] [INFO] Starting gunicorn 19.6.0
2018-02-11T01:21:15.949430+00:00 app[web.1]: [2018-02-11 01:21:15 +0000] [4] [INFO] Listening at: http://0.0.0.0:29162
2018-02-11T01:21:19.278810+00:00 heroku[router]: at=info method=GET path="/" host=removed.herokuapp.com request_id=bd74ea4c-3e3a-403b-8850-198b7dec20e2 fwd="104.152.1.62" dyno=web.1 connect=1ms service=2146ms status=200 bytes=2895 protocol=https
2018-02-11T01:21:19.650759+00:00 heroku[router]: at=info method=GET path="/dist/bundle.css" host=removed.herokuapp.com request_id=48183249-fb12-4c7a-9a53-2a57ab58d89b fwd="104.152.1.62" dyno=web.1 connect=0ms service=3ms status=200 bytes=2895 protocol=https …Run Code Online (Sandbox Code Playgroud) 我开始使用Mega Flask教程来构建一个简单的博客风格网站.我用这个与一些python学习相关,试图加强我学到的东西.为了更多地学习,我决定将教程弃用OAuth登录文章转换为传统的登录栏.当我尝试登录时,我遇到了一个问题.
NoForeignKeysError:无法确定关系User.posts上的父/子表之间的连接条件 - 没有链接这些表的外键.确保引用列与ForeignKey或ForeignKeyConstraint相关联,或指定"primaryjoin"表达式.
由于我对Python的理解有限,我在这里遇到了一个很大的障碍.我似乎无法弄清楚我做错了什么.
这是我的models.py文件.
followers = db.Table('followers',
db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))
)
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
nickname = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password = db.Column(db.String(100))
posts = db.relationship('Post', backref='author', lazy='dynamic')
about_me = db.Column(db.String(140))
last_seen = db.Column(db.DateTime)
followed = db.relationship('User',
secondary=followers,
primaryjoin=(followers.c.follower_id == id),
secondaryjoin=(followers.c.followed_id == id),
backref=db.backref('followers', lazy='dynamic'),
lazy='dynamic')
#reviews = db.relationship('Review', backref='author', lazy='dynamic') This is the review connectino for the user.
@staticmethod
def make_unique_nickname(nickname):
if …Run Code Online (Sandbox Code Playgroud) SQL 文件 中是否有用于连接数据库的命令?
我想创建一个数据库,然后立即开始用表和数据填充它。所有内容都包含在一个.sql文件中。我不知道有什么可以替代\cshell 命令吗?
SQL 文件示例:
CREATE DATABASE mydb;
CREATE USER myusername WITH PASSWORD 'mypassword';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myusername;
CONNECT TO mydb USER myusername; --<-- something like this?
CREATE TABLE administrator (
id integer NOT NULL,
admin_name character varying(150),
password character varying(255),
active boolean,
"timestamp" timestamp without time zone,
email character varying(255)
);
ALTER TABLE administrator OWNER TO myusername;
Run Code Online (Sandbox Code Playgroud)
CONNECT 是我在文档中找到的最接近的东西,但它遇到了语法错误。我也找不到指定表应该去哪里的包装器?
ERROR: syntax error at or near "CONNECT"
因此,我一直在尝试将图像上传器添加到我的代码中,但是却遇到了问题。即使我认为自己的upload_folder配置正确,但仍会收到类似以下错误:IOError: [Errno 2] No such file or directory: '/static/uploads/compressor.jpg' 即使文件/目录存在。
这是代码:
UPLOAD_FOLDER = 'static/uploads'
Run Code Online (Sandbox Code Playgroud)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
Run Code Online (Sandbox Code Playgroud)
@app.route('/fileupload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
#check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
#submit an empty part without filename
if file.filename == '':
flash('No selected file')
return redirect(request.url) …Run Code Online (Sandbox Code Playgroud) 尝试id从我的网址中获取,以便可以将其用于fetchData componentDidMount。我还使用它来设置组件中的某些状态以在页面上显示信息。但是,两者ownProps.match和ownProps.params始终都无法定义。我已经尝试了很多事情,但我能想到的是我的/ route在thing /:id之前匹配,这会导致问题?
(我可以使用任何一个,但它们会失败,就像这样)。
TypeError: this.props.params is undefined
TypeError: this.props.match is undefined
这是我的路线:
export default (
<Route path="/" component={App}>
<Route path="login" component={requireNoAuthentication(LoginView)} />
<Route path="register" component={requireNoAuthentication(RegisterView)} />
<Route path="home" component={HomeContainer} />
<Route path="thing/:id" component={ThingContainer} />
<Route path="category" component={CategoryContainer} />
<Route path="analytics" component={requireAuthentication(Analytics)} />
<Route path="basic" component={requireNoAuthentication(BasicContainer)} />
<Route path="*" component={DetermineAuth(NotFound)} />
</Route>
);
Run Code Online (Sandbox Code Playgroud)
mapStateToProps在这里(我一直在注释掉,thing直到我能找出问题,所以可以忽略该问题)。我真正看到问题的地方是const {id}部分。
function mapStateToProps(state, ownProps) {
console.log(ownProps);
return {
data: state.data,
token: state.auth.token,
loaded: state.data.loaded,
isFetching: state.data.isFetching, …Run Code Online (Sandbox Code Playgroud) 问题:
运行 skaffold 并更新监视的文件时,我看到文件同步更新发生并且 nodemon 重新启动服务器,但刷新页面不会显示更改。直到我完全停止 skaffold 并重新启动后,我才看到变化。
Syncing 1 files for test/dev-client:e9c0a112af09abedcb441j4asdfasfd1cf80f2a9bc80342fd4123f01f32e234cfc18
Watching for changes every 1s...
[client-deployment-656asdf881-m643v client] [nodemon] restarting due to changes...
[client-deployment-656asdf881-m643v client] [nodemon] starting `node bin/server.js`
Run Code Online (Sandbox Code Playgroud)
设置:
我有一个简单的微服务应用程序。它有一个服务器端(flask/python)和一个客户端(react),可以快速处理开发服务器。我让 nodemon 使用旧版监视标志为 true(对于 Chokidar 轮询)。在开发中,我通过 Docker for Mac 使用 Kubernetes。
代码:
我很高兴发布我的代码以提供帮助。让我知道哪些是最需要的。
这里有一些初学者:
Skaffold.yaml:
apiVersion: skaffold/v1beta7
kind: Config
build:
local:
push: false
artifacts:
- image: test/dev-client
docker:
dockerfile: Dockerfile.dev
context: ./client
sync:
'**/*.css': .
'**/*.scss': .
'**/*.js': .
- image: test/dev-server
docker:
dockerfile: Dockerfile.dev
context: ./server
sync: …Run Code Online (Sandbox Code Playgroud) python ×3
reactjs ×3
flask ×2
file-upload ×1
flask-login ×1
heroku ×1
javascript ×1
kubernetes ×1
node.js ×1
nodemon ×1
postgresql ×1
react-router ×1
redux ×1
skaffold ×1
sql ×1
sqlalchemy ×1
webpack ×1