我用# libraries
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
# Build your graph
G=nx.from_pandas_dataframe(df, 'src', 'dest',create_using=nx.DiGraph())
# Plot it
nx.draw(G, with_labels=True)
plt.show()
创建了一个React项目,其中Node.js作为后端。我通过Node.js提供静态文件。
我试图弄清楚几个小时。当我在docker中运行并将应用程序推送到Heroku时,有时会出现此错误:错误:ENOENT:没有这样的文件或目录,stat'/usr/src/app/server/build/index.html'
那很奇怪吗?如果我单击一下,一切正常。突然无法正常运作,并告诉我找不到create-react-app
吗?
如果我再次进入该页面并再次单击四周,则一切正常。为什么会这样?
我用于在node.js index.html
文件中提供静态文件的代码:
server.js
我的文件夹结构:
我的反应路由器:
// Serve static files if in production or running in docker
if ( process.env.NODE_ENV === "production" || process.env.NODE_ENV === "docker" ) {
// Set static folder
app.use("/", express.static("build"));
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "build", "index.html"));
});
}
在开发模式下,一切正常,但是在生产中,我遇到了这些问题。当我以开发模式刷新页面时,即时消息仍在页面上。如果我在生产模式下刷新,也会收到相同的错误:错误:ENOENT:没有此类文件或目录,stat'/usr/src/app/server/build/index.html'
我可以做些调整来避免这种情况吗?感谢您的帮助!
答案 0 :(得分:0)
我,尚未测试它,但是您正在从build
文件夹提供静态文件,而app.get
从该文件夹提供了index.html
。因此,尝试:
if ( process.env.NODE_ENV === "production" || process.env.NODE_ENV === "docker" ) {
// Set static folder
app.use("/", express.static("build"));
}
至少这是明确的部分。但是我不知道反应路由器如何适应图片。
答案 1 :(得分:0)
我的疯狂猜测是
app.use("/", express.static("build"));
不能按预期工作。尝试这样做:
const clientDir = path.resolve(__dirname, 'build')
app.use(express.static(clientDir))
但是很难猜测。我使用上面没有任何问题。它可能不适用于您的用例。祝你好运。
答案 2 :(得分:0)
我解决了这个问题。
用于提供静态文件的新代码。
// Serve static files if in production or running in docker
if ( process.env.NODE_ENV === "production" || process.env.NODE_ENV === "docker" ) {
// Set static folder
app.use(express.static(path.join(__dirname, '../build')));
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, '../build', 'index.html'));
});
}