我知道此错误不是失败的原因。之所以失败,是因为在我的index.html文件中:
<body><noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="text/javascript" src="/static/js/main.f4a49fba.js"></script>
</body>
该脚本标记src失败,并返回与index.html本身相同的文件内容。这会导致它呈现HTML(因此<从<!DOCTYPE html>
中未出现)。
我正在尝试使两个Express服务器都带有/ graphql并一起做出反应。有效的解决方案是使用如下所示的express.static中间件。问题是工作解决方案破坏了/ graphql端点,因此我无法返回任何数据。
app.use(express.static(path.join(__dirname, 'client/build')));
我需要使此工作正常进行,因此在检查静态页面之前,它首先允许先前的点(/graphql
),所以我尝试使用此方法:
app.get('*', (req, res) => {
res.sendFile('index.html', { root: path.join(__dirname, 'client/build/') });
});
此操作已成功撤回,但由于脚本标签中的main.f4a49fba.js
不想加载而无法正常工作。我尝试将其更改为/client/build/static/js/main.f4a49fba.js
,但仍然无法加载。这是使用构建文件进行生产的。
更新:
我用下面的代码替换了我的代码,这很有帮助,但是由于某些原因,即使我在上面有/ graphql,当运行一个完整的地址时它仍在运行。
app.get('*', (req, res) => {
const link = (req.path == '/' ? 'index.html' : req.path);
const root = path.join(__dirname, 'client/build');
res.sendFile(link, { root: root }, (error) => {
if (error) {
res.sendFile('/', { root: root });
}
});
});
当出现一个graphql请求时,我现在得到了它,似乎缺少第一个/ graphql并转到了我上面的更新函数。奇怪的是,我在任何当前页面的末尾都贴了graphql完整地址。
http://localhost:3000/dashboard/accounts/my.herokuapp.com/graphql 404 (Not Found)