react express未捕获到的SyntaxError:意外的令牌<

时间:2018-06-22 04:32:53

标签: node.js reactjs express

我知道此错误不是失败的原因。之所以失败,是因为在我的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)

0 个答案:

没有答案